![]() |
1
1
在同一个DataContext中,我的理解是,对于返回完整对象而不是投影的查询,总是会得到相同的对象。 但是,不同的数据上下文将获取不同的对象-因此有可能在那里看到过时的数据,是的。 |
![]() |
2
1
在同一个DataContext中,如果查询了相同的对象,则会得到相同的对象(DataContext为此维护内部缓存)。 请注意,您处理的对象很可能是可变的,因此您可以获得另一个(并发访问),而不是一个问题(重复数据)。 根据业务案例的不同,可以让第二个带有过时数据的事务在提交时失败。 另外,想象一个好的旧的idataReader/dataset场景。两个查询将返回两个不同的读取器,它们将填充不同的数据集。因此,重复数据问题不是ORM特有的。 |
![]() |
3
0
[很抱歉,请注意,此回复适用于linq to sql,而不是实体框架。] 我把它放在这里(而不是删除),因为它部分是关于主题的,可能有用。 对于其他回复,请注意,数据上下文还能够避免对简单的“按主键”查询执行往返操作-它将首先检查缓存。 不幸的是, completely 在3.5中损坏,并且仍然 half-broken 在3.5sp1中,但它适用于 一些 查询。如果要获取单个对象,这可以节省很多时间。 所以基本上,IIRC需要使用:
但不是:
|