【发布时间】:2011-06-20 00:55:35
【问题描述】:
假设我在一个名为 TestDB 的数据库中有一个表,其中一个名为 Table1 的表包含两列
ID
Name
在这张表中,有两行,
ID 1 and Name 'Row1'
ID 2 and Name 'Row2'
如果这是我的代码
var currObj = Table1.Where(o => o.Name.Contains("Row1")).FirstOrDefault();
currObj.Name = "Row1a";
var a = Table1.Where(o => o.Name.Contains("Row1a")).FirstOrDefault();
var b = Table1.Local.Where(o => o.Name.Contains("Row1a")).FirstOrDefault();
a 将返回 null,而 b 将返回一个值。
如果我这样做
var c = Table1.Where(o => o.Name.Contains("Row2")).FirstOrDefault();
var d = Table1.Local.Where(o => o.Name.Contains("Row2")).FirstOrDefault();
然后 c 会返回一些东西,但 d 不会。
对我来说,这似乎不直观,因为数据可能存在两个不同的位置。对于我所做的每个查询,我都必须查看数据库和 Local 对象并将它们合并在一起。就像它在本地对象中发生变化一样,我必须考虑到这一点。 Entity Framework 是否有任何机制可以同时考虑数据库中的数据和本地数据?
如果我去了
var e = Table1.AMagicSolution.Where(o => o.Name.Contains("Row1a")).FirstOrDefault();
var f = Table1.AMagicSolution.Where(o => o.Name.Contains("Row2")).FirstOrDefault();
那么 e 和 f 都会返回一些东西(f 来自数据库,e 来自 Local 对象)
【问题讨论】:
标签: entity-framework c#-4.0 .net-4.0 entity-framework-4.1