我在项目中使用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。
任何人都知道为什么会发生这种情况,即使使用正确的参数调用存储过程。
答案 0 :(得分:0)
我会尝试重建DBML文件,可能是模型已经改变,LINQ在尝试将新数据放入旧模型时感到困惑。