我针对特定 View 的 SQL 查询返回 3 个不同的行。
select * from vwSummary
where vidate >= '10-15-2010' and vidate <= '10-15-2010'
and idno = '0330'
order by viDate
但如果我通过我的 Entity Framework 运行相同的查询,我得到 3 行,但所有 3 行都相同,相当于第三行。
firstVisibleDate = new DateTime(2010, 10, 15);
lastVisibleDate = new DateTime(2010, 10, 15);
var p1 = (from v in db.vwSummary
where v.viDate >= firstVisibleDate && v.viDate <= lastVisibleDate
&& v.IDNo == "0330"
select v).ToList();
谁能帮我解决这个问题。
编辑: 我像这样更改了我的查询并且它有效。但我仍然想回到上面显示的那个,因为我必须再次迭代以进行更多处理。
List<objectName> p1 = (from v in db.vwSummary
where v.viDate >= firstVisibleDate && v.viDate <= lastVisibleDate
&& v.IDNo == "0330"
select new <ObjectName>
{
a = v.a
b = v.b
}
).ToList<ObjectName>();
最佳答案
我有一个类似的问题,我通过更改 ObjectSet 的合并选项解决了它。 示例:
using (TargetDBDataContext db = new TargetDBDataContext())
{
db.SomeView.MergeOption = System.Data.Objects.MergeOption.NoTracking;
return db. SomeView.ToList();
}
Entity Framework (EF) 似乎无法正确处理具有重复主键或根本没有主键的 View 。因此,当 EF 认为有两行相等时,EF 将加载第一行,但不会加载第二行,因为它认为它已经加载。
关于c# - Entity Framework 查询中令人难以置信的重复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4994203/