Linq给sql存储过程调用错误的结果

时间:2014-10-08 14:52:32

标签: c# sql sql-server vb.net linq

我在项目中使用Linq to Sql来调用存储过程。它是一个返回几行的存储过程

`Return db.ProcName(param1, param2, ......,paramN).ToList`

使用正确的参数正确调用存储过程。我可以通过运行SQL分析器看到它。当我在管理工作室中运行存储过程时,我得到了正确的结果。如果运行在配置文件日志中记录的sql语句,我会得到正确的结果。

问题是当Linq收到数据时,ToList返回的结果基本上与数据库返回的结果不同。我确实记得有关NULL值的内容,或者当没有primary key时Linq做了有趣的事情,但我不确定究竟是什么。

有人可以指出这里发生了什么吗?表1是在管理工作室中执行时存储过程返回的结果,表2是Linq到Sql代码执行时返回的结果

表1:

OrgRef OrgCode DisplayName StockTakeId StockTakeName   StockPositionDate   StockTakeOrganisationReturnId   SubmittedBy ReturnStatus    IsEditable
------------------------------------------------------------------------------------------------------------------------------------------------------------------
9391    K81060  Name        2           Type2           NULL                NULL                            NULL            NULL        1
9391    K81060  Name        1           Type1           2014-05-20          311                             Sachin Kalra    Saved       1
9391    K81060  Name        1           Type1           2014-10-08          312                             Sachin Kalra    Saved       1

表2:

OrgRef OrgCode DisplayName StockTakeId StockTakeName   StockPositionDate   StockTakeOrganisationReturnId   SubmittedBy ReturnStatus    IsEditable
------------------------------------------------------------------------------------------------------------------------------------------------------------------
9391    K81060  Name        2           Type2           NULL                NULL                            NULL            NULL        1
9391    K81060  Name        1           Type1           2014-05-20          311                             Sachin Kalra    Saved       1
9391    K81060  Name        1           Type1           NULL                NULL                                Sachin Kalra    Saved       1

在表1中,您可以看到第二行和第三行的值为第6列(StockPositionDate)和第7列(StockTakeOrganisationReturnId)但在表2中这些值变为NULL。

任何人都知道为什么会发生这种情况,即使使用正确的参数调用存储过程。

1 个答案:

答案 0 :(得分:0)

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