c# - Entity Framework 查询中令人难以置信的重复

标签 c# entity-framework sql-server-2008 duplicates

我针对特定 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/

相关文章:

c# - 我如何使用 OnPhotonSerializeView?

C# 保持管道打开

c# - EFCore 选择了错误的列名

asp.net-mvc - 构建 View 模型的最佳方法是什么?

c# - 如何判断 Entity Framework 6+ 查询生成的 SQL 是否使用索引?

sql-server - 获取当前工作日从周一到周日

c# - 只有方法的类,应该是单例或静态的

c# - DateTime 列上的 Mono InvalidOperationException (SQL Server)

sql-server - 是否可以使用 Delphi for win32 创建 SQL Server UDF?

sql-server-2008 - 是否可以从 SSIS 包中将数据脚本化为 Insert 语句?