【问题标题】:Linq to sql stored procedure call wrong resultLinq to sql 存储过程调用错误结果
【发布时间】: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


【解决方案1】:

我会尝试重建 DBML 文件,可能是模型已更改,LINQ 在尝试将新数据放入旧模型时感到困惑。

【讨论】:

  • 也许不是全部。通常,当我在使用 procs 时遇到 EF 问题时,我只会删除函数导入、自定义结果类型和存储的 proc,然后重新添加 proc 以取回它们,这通常会有所帮助 - 所以我不这样做不必重建整个事物。
猜你喜欢
  • 2010-10-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多