c# - Linq To 实体查询返回错误数据(不同于 Management Studio 查询)

标签 c# sql entity-framework

如标题所示,我的问题是我有一个从 View 中选择数据的查询/存储过程,它在管理工作室中工作得很好,问题是当我尝试从我的应用程序调用此数据时(使用linq to entites) 我得到了错误的数据(错误是因为当查询应该返回 5 个不同的行/记录时,单行重复了 10 次) 这是我的管理工作室查询:

select * from dbo.v_RouteCardDetails_SizeInfo
where  Trans_TransactionHeader = 0
AND Direction = 0
AND RoutGroupID = 1
AND Degree = '1st'

返回结果:

Size    SizeQuantity    Trans_TransactionHeader RoutGroupID Direction   Degree

XS  10  0   1   0   1st
S   2   0   1   0   1st
M   0   0   1   0   1st
L   5   0   1   0   1st
XXL 2   0   1   0   1st

这是我的 Linq 查询:

    (from x in context.v_RouteCardDetails_SizeInfo
                            where  x.Trans_TransactionHeader == 0
                                && x.Direction == 0
                                && x.RoutGroupID == 1
                                && x.Degree.ToLower() == "1st"
                        select x).ToList<_Model.v_RouteCardDetails_SizeInfo>();

返回的结果是:

Size    SizeQuantity    Trans_TransactionHeader RoutGroupID Direction   Degree

XS  10  0   1   0   1st

XS  10  0   1   0   1st

XS  10  0   1   0   1st

XS  10  0   1   0   1st

XS  10  0   1   0   1st

XS  10  0   1   0   1st

XS  10  0   1   0   1st

XS  10  0   1   0   1st

XS  10  0   1   0   1st

XS  10  0   1   0   1st

2 天来我一直在努力解决这个问题,感谢您的帮助 谢谢

最佳答案

毫无疑问,Entity Framework 猜测为 View 主键的字段在 View 中不是唯一的。尝试在 edmx 设计器(或代码优先映射)中向 PK 添加字段,直到您真正获得独特的组合。

EF 只是为它在 SQL 查询的结果集中找到的每个相同的键值具体化相同的行。

关于c# - Linq To 实体查询返回错误数据(不同于 Management Studio 查询),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17188442/

相关文章:

c# - 如何将图像存储在磁盘上并使用 EF 链接到数据库?

c# - Entityframework 错误 : "The type ' . .....' 出现在单个 LINQ to Entities 查询中的两个结构不兼容的初始化中

c# - byte.TryParse() 哪种方法更好

sql - 建议锁定或 NOWAIT 以避免等待锁定的行?

c# - 简单的 LINQ to Entities 更新抛出 'Timeout expired'

mysql - CakePHP 在多个 HABTM 表中搜索

sql - 像数据库行的引用计数或共享指针之类的东西?

c# - WPF MVVM 从 icommand 执行更改父窗口 View 模型

c# - .net 在运行时重新加载程序集

c# - 当观察到 TreeList 中的节点已从代码中检查复选标记时,是否会触发任何事件?