我正在尝试使用LINQ连接到SQL存储过程。它对于具有静态SQL查询的存储过程非常有用。
我想连接到具有动态SQL的存储过程。
在存储过程结束时,它有一个exec
语句。
exec(@srchQuery)
当我这样做时,它不起作用,因为它是动态SQL。
如果我使用print @srchQuery
并复制该存储过程并在存储过程中使用该静态SQL,则没有问题。
答案 0 :(得分:2)
LINQ to SQL分析直接SELECT
语句,以查看它作为执行所述SQL存储过程的结果而必须投影的模型类型。因为您使用EXEC
使用动态语句,所以无法确定要生成的模型类型。
简单的答案是要么不使用存储过程,而是使用LINQ to SQL生成SQL,或者不要在存储过程中使用动态构建语句。
您生成SQL语句的事实必然意味着您有一个强大的用例,因为它可以在没有存储过程的情况下实现您想要的。总是喜欢简单...问问自己,你需要在存储过程中使用动态构建的语句吗?
答案 1 :(得分:0)
直接在DataContext中调用存储过程:
using (YourDataContext dc = new YourDataContext())
{
...
dc.ExecuteCommand("EXEC MyStoredProcedure");
...
}