我有这些课程;
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中的延迟加载功能引起的。但我无法想出办法解决这个问题。任何人都可以帮助我吗?