实体框架导航属性不会加载正确的实体

时间:2014-03-22 14:27:38

标签: c# asp.net entity-framework ef-code-first

我有这些课程;

public class Address
{
    [Key]
    [Required]
    [DatabaseGenerated(System.ComponentModel.DataAnnotations.Schema.DatabaseGeneratedOption.Identity)]
    public int ID { get; set; }
}

public class Info
{
    [Key]
    [Required]
    [DatabaseGenerated(System.ComponentModel.DataAnnotations.Schema.DatabaseGeneratedOption.Identity)]
    public int ID { get; set; }

    public int AddressID { get; set; }

    public virtual Adress Adress { get; set; }
}

public class Prop
{
    [Key]
    [Required]
    [DatabaseGenerated(System.ComponentModel.DataAnnotations.Schema.DatabaseGeneratedOption.Identity)]
    public int ID { get; set; }
    public int InfoID { get; set; }
    public virtual Info Info { get; set; }
}

假设我有5个Prop,5个Info和1000个地址实体。当我像这样浏览时;

ObjectContext obj = new ObjectContext();
Prop pl = obj.Props.ToList();
foreach(Prop p in pl)
{
   Response.Write(p.Info.Address.ID);
   Response.Write(p.Info.AddressID);
}

First Response.Write写下ID 1到5.这是表中的前5行。但这是不正确的。

因为,第二个Response.Write实际上写下了真实的。实际通过我在Info表中添加的外键引用Address表的ID列的那些。它们就像56,568,12,596,22 ......

导航属性似乎正在加载地址表中的第一行。

我已经研究了一下,我发现它可能是由EF中的延迟加载功能引起的。但我无法想出办法解决这个问题。任何人都可以帮助我吗?

0 个答案:

没有答案