我正在尝试使用LINQ连接到SQL存储过程。对于具有静态SQL查询的存储过程,它工作得非常好。
我希望连接到具有动态SQL的存储过程。
在存储过程的末尾有一条exec语句。
exec(@srchQuery) 当我这样做时,它不工作,因为它是动态SQL。
如果我使用print @srchQuery并复制存储过程并在存储过程中使用静态SQL,它将不会出现任何问题。
发布于 2011-09-03 00:24:10
LINQ to SQL分析直接的SELECT语句,以查看作为执行所述SQL存储过程的结果它具有什么模型类型。因为您使用的是使用EXEC的动态语句,所以它无法确定要生成的模型类型。
简单的答案是不使用存储过程,而是使用LINQ to SQL来生成SQL,或者不在存储过程中使用动态构建语句。
生成SQL语句的事实必然意味着您有很强的用例,因为它可以在不使用存储过程的情况下实现您想要的结果。总是偏爱简约...问问自己,您是否需要在存储过程中使用动态构建的语句?
发布于 2011-09-03 01:09:58
只需在DataContext中直接调用存储过程:
using (YourDataContext dc = new YourDataContext())
{
...
dc.ExecuteCommand("EXEC MyStoredProcedure");
...
}https://stackoverflow.com/questions/7286170
复制相似问题