2014-11-11 3 views
1

Мне нужно выполнить хранимую процедуру SQL Server из linq-to-sql. Я добавил хранимую процедуру в контексте данных и использовал контекст в своем классе. Вот мой код для вызова хранимой процедуры SQL Server из C# класс:ошибка из linq при выполнении хранимой процедуры из linq

using (DBTestDataContext db = new DBTestDataContext()) 
{ 

    db.myStoreProcedure(name, address, hasValue); 
} 

Здесь HasValue имеет битный тип, имя и адрес строкового типа и у меня есть значение прохода в HasValue, как истина/ложь делает его bool type. Моя проблема заключается в выполнении процедуры, я получаю ошибку

Could not translate expression 'value (DBTestDataContext.myStoreProcedure("abc","xyz",true)) into SQL and could not treat it as a local expression. 

Однако он успешно выполняется в SQL Server:

EXEC dbo.myStoreProcedure @name="abc", @address = "xyz", @hasValue = true 

он работает нормально. Это проблема связана с db.myStoreProcedure ??? Для любых введенных данных этот код не работает. Как это можно исправить?

Может ли кто-нибудь помочь мне, как исправить это. спасибо заранее.

ответ

0

Попробуйте выполнить его вот так.

var param1 = new SqlParameter("@param1", 1); 
var param2 = new SqlParameter("@param2", 2); 

var results = context.Database.SqlQuery<StronglyTypedObject> 
       ("SPName @param1, @param2",param1, param2).ToList() 
+0

Свойства 'StronglyTypedObject' должны соответствовать полям, возвращаемым из SP, чтобы правильно связывать – CSharper

Смежные вопросы