.net 实体框架填充所有加载实体的关系

.net 实体框架填充所有加载实体的关系,.net,entity-framework,entity-framework-4,.net,Entity Framework,Entity Framework 4,我认为这在伪代码中更容易看到,但是如果你想看到真正的交易,请告诉我。我有几个感兴趣的表格: Document - {Id(int), TypeId(int)} DocumentType - {Id(int)} EF为我生成了一些模型: Document - {Id(int), TypeId(int), Type(DocumentType)} DocumentType - {Id(int), Documents(ICollection<Document>)} 这个看起来不错。现在我

我认为这在伪代码中更容易看到,但是如果你想看到真正的交易,请告诉我。我有几个感兴趣的表格:

Document - {Id(int), TypeId(int)}
DocumentType - {Id(int)}
EF为我生成了一些模型:

Document - {Id(int), TypeId(int), Type(DocumentType)}
DocumentType - {Id(int), Documents(ICollection<Document>)}
这个看起来不错。现在我再打一个电话

context.Documents.Include(“Type”)。其中(x=>x.Id<4):

其中“*”表示模型属性的无限递归。只有当嵌入的集合包含一个对象,并且该对象也被正确加载到模型或检索到的模型数组中的任何位置时,才会发生这种递归。(在本例中,第三个条目的类型与第一个条目相匹配。)我觉得这就像EF正在做的缓存相关的事情,但希望有人能提供一些关于为什么会发生这种情况的信息

(EF4,数据库优先-通过edmx生成模型)

谢谢

Document:{id:1, type:{id:1, documents:null}}
Document:{id:2, type:{id:4, documents:null}}
Document:{id:1, type:{id:1, documents:[{id:1, type:{id:1, documents:*}},{id:2, type:{id:4, documents:*}},{id:3, type:{id:1, documents:*}}]}}
Document:{id:2, type:{id:4, documents:[{id:1, type:{id:1, documents:*}},{id:2, type:{id:4, documents:*}},{id:3, type:{id:1, documents:*}}]}}
Document:{id:3, type:{id:1, documents:[{id:1, type:{id:1, documents:*}},{id:2, type:{id:4, documents:*}},{id:3, type:{id:1, documents:*}}]}}