我刚刚与一位同事讨论Entity Framework更改跟踪。我们终于想通了,我的上下文接口应该有实体框架跟踪的开销是多少?
IDBSet<MyPoco> MyThings { get; }
而不是
IQueryable<MyPoco> MyThings { get; }
,我的POCO也应该有它的所有属性virtual
。
使用调试器,我们可以看到跟踪对象,并且结果还包含代表我的实际POCO的代理。
如果我没有我的POCO属性virtual
和使用IQueryable<>
代替IDbSet<>
有我的上下文接口我没有得到任何的。
在这个例子中,我只查询数据库,但将来会希望通过实体框架来更新数据库。
因此,为了使我的生活在将来以这种代码作为参考时变得更加简单,在我将永远不会使用它们的情况下,跟踪信息/代理在那里有任何性能损失吗?
我实际上有一个接口,我编写了我的linq查询使用IQueryable <>。我在该接口的实现中也有IDBSet <>属性,这些属性作为IQueryable返回。 –
感谢您澄清延迟加载功能,我没有考虑。 –