2014-10-08 62 views
0

我在我的项目中使用Linq到Sql来调用存储过程。这是一个获取存储过程,返回几行Linq到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

我不确定它是什么,我测试它错了,或者只是重建做了一些事情。我已经标记了关闭它的答案。 – Yatish 2014-10-09 09:38:13

回答

0

我会尝试重建DBML文件,它可能是模型已经改变,并且LINQ正在混淆尝试将新数据放入旧模型。

+0

也许不是全部。通常,当我遇到与proc一起使用EF的问题时,我只会删除函数import,自定义结果类型和存储过程,然后重新添加proc以使其返回,这通常有帮助 - 不得不重建整个事情。 – 2014-10-08 15:31:58