EF CF: верно ли, что NULL всегда является объектом FK? - PullRequest
0 голосов
/ 30 сентября 2011

У меня есть доменные модели, подобные этой

public class ShipToCode
    {

        public int ShipToCodeID { get; set; }

        [Required(ErrorMessage = "Nombre es requerido",AllowEmptyStrings = false)]
        [StringLength(50, ErrorMessage = "Debe ser menor a 50 carácteres")]
        [MaxLength(50)]
        [Column("nb_name")]
        public string Name { get; set; }

        [StringLength(15, ErrorMessage = "Debe ser menor a 15 carácteres")]
        [MaxLength(15)]
        [Column("cd_locId")]
        public string locId { get; set; }

        public int? RegionID { get; set; }
        public virtual Region Region { get; set; }


        [Required(ErrorMessage = "Dealer es requerido")]
        public int DealerID { get; set; }
        public virtual Dealer Dealer { get; set; }
    }
public class Dealer
    {

        public Dealer()

        {

            this.ShipToCode = new HashSet<ShipToCode>();
        }

        public int DealerID { get; set; }

        [Required(ErrorMessage = "Nombre es requerido")]
        [StringLength(100, ErrorMessage = "Debe ser menor a 100 carácteres")]
        [MaxLength(100)]
        [Column("nb_name")]
        public string Name { get; set; }

        [Required(ErrorMessage = "Codigo de distribuidor es requerido")]
        [StringLength(100, ErrorMessage = "Debe ser menor a 100 carácteres")]
        [MaxLength(100)]
        [Column("cd_dealerCode")]
        public string DealerCode { get; set; }

        public virtual ICollection<ShipToCode> ShipToCode { get; private set; }


    }

В моем контексте

protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {

            modelBuilder.Entity<ShipToCode>()
               .HasRequired<Dealer>(d => d.Dealer)
               .WithMany(d => d.ShipToCode)
               .HasForeignKey<int>(c => c.DealerID);

        }

Но когда я получаю любой ShipToCode или Dealer, используя функцию поиска DbSet, мой объект Dealer в ShipToCode или ICollection of ShipToCode в Dealer становится пустым

Это нормально, или я что-то упустил? пожалуйста помогите !!

1 Ответ

0 голосов
/ 30 сентября 2011

В вашем Dealer свойстве,
public virtual ICollection<ShipToCode> ShipToCode { get; private set; }
имеет метод set private, который вам нужен, чтобы сделать его открытым, иначе EF не сможет установить его из базы данных.И убедитесь, что в вашем context включена отложенная загрузка.Если вы не включили отложенную загрузку, вы можете использовать готовую загрузку следующим образом:

Context.ShipToCodes.Include(s=>s.Dealer ).where(s=>s.ShipToCodeID ==1)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...