无需数据库调用即可获取持久实体引用
是否可以获取对 id 已知的已持久对象的引用,无需数据库往返,就像使用 ISession.Load(id) 对 NHibernate 所做的那样?
Is it possible to get a reference to an already persistent object for which the id is known without a DB roundtrip, like one would do with NHibernate using ISession.Load(id)
?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
是的,如果对象已经加载,这是可能的。在 EF Future CTP5 的情况下,您可以使用
DbSet
实例的新Local
属性:在
ObjectContext
的情况下,情况有点小复杂 - 您需要 EntityKey 实例,在使用 POCO 时获取该实例很麻烦。我的存储库代码的一部分:
如果未加载实例,则在不查询数据库的情况下根本无法获取引用。您可以使用虚拟对象创建。
CTP5 示例:
纯 EF4 示例:
或创建代理的虚拟对象(CTP5 示例):
CTP5 示例:
纯 EF4 示例:
Yes it is possible if the object is already loaded. In case of EF Future CTP5 you can use new
Local
property of theDbSet<T>
instance:In case of
ObjectContext
the situation is little bit complicated - you needEntityKey
instance which is cumbersome to get when working with POCOs.Part of my repository code:
If the instance is not loaded you simply can't get the reference without querying DB. You can use dummy object creation.
CTP5 example:
Pure EF4 example:
or dummy object with proxy creation (CTP5 example):
CTP5 example:
Pure EF4 example: