【发布时间】:2014-10-08 14:52:32
【问题描述】:
我在我的项目中使用 Linq to Sql 来调用存储过程。这是一个返回几行的获取存储过程
`Return db.ProcName(param1, param2, ......,paramN).ToList`
它使用正确的参数正确调用存储过程。我可以通过运行 SQL 探查器看到这一点。当我在管理工作室中运行存储过程时,我得到了正确的结果。如果运行记录在配置文件日志中的 sql 语句,我会得到正确的结果。
问题是Linq收到数据后,基本上ToList返回的结果和数据库返回的结果不一样。我确实记得一些关于 NULL 值的事情,或者当没有 primary key 时,Linq 做了一些有趣的事情,但我不确定它到底是什么。
有人能指出这里发生了什么吗?表1是在management studio中执行时stored proc返回的结果,表2是Linq to Sql代码执行时返回的结果
表 1:
OrgRef OrgCode DisplayName StockTakeId StockTakeName StockPositionDate StockTakeOrganisationReturnId SubmittedBy ReturnStatus IsEditable -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- ------------ 9391 K81060 名称 2 类型 2 NULL NULL NULL NULL 1 9391 K81060 名称 1 类型 1 2014-05-20 311 Sachin Kalra 已保存 1 9391 K81060 名称 1 Type1 2014-10-08 312 Sachin Kalra 已保存 1
表 2:
OrgRef OrgCode DisplayName StockTakeId StockTakeName StockPositionDate StockTakeOrganisationReturnId SubmittedBy ReturnStatus IsEditable -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- ------------ 9391 K81060 名称 2 类型 2 NULL NULL NULL NULL 1 9391 K81060 名称 1 类型 1 2014-05-20 311 Sachin Kalra 已保存 1 9391 K81060 名称 1 Type1 NULL NULL Sachin Kalra 已保存 1
在表 1 中,您可以看到第二行和第三行的第 6 列 (StockPositionDate) 和第 7 列 (StockTakeOrganisationReturnId) 的值,但在表 2 中,这些值变为 NULL。
任何人都知道为什么会发生这种情况,即使使用正确的参数调用存储的过程。
【问题讨论】:
-
我仍然不确定它是什么,我测试它错误或只是重建做了一些事情。我已将答案标记为关闭它。
标签: c# sql sql-server vb.net linq