2012-04-13 2 views
0

Я использую Entity Framework ExecuteStoreQuery для вызова хранимой процедуры MySql с выходным параметром. Процедура магазина также возвращает набор результатов.ASP.NET MVC EF Вызов хранимой процедуры MySQL с параметрами Out

Я получаю следующее сообщение об ошибке.

OUT или INOUT аргумент 2 для обычного mydb.mysp не является переменной или NEW псевдопеременная в ДО триггером

Что не так? Есть ли лучший способ вызвать MySql sp с сочетанием параметров и результатов?

Вот код

 var outParam = new MySqlParameter(); 
       outParam.ParameterName = "totalRowsOut"; 
       outParam.MySqlDbType = MySqlDbType.Int64; 
       outParam.Direction = ParameterDirection.Output; 

var data = db.ExecuteStoreQuery<PropertySearchResultRow> 
(
    "call mysp(@input1, @totalRowsOut);", 
    new MySqlParameter("input1", 10), 
    outParam 
); 

var result = data.ToList(); 
int totalRowsCount = (int)outParam.Value; 

ответ

2

Наконец-то с помощью ado.net MySqlCommand вызывается сохраненная процедура и выдает значение. Интеграция Mysql и EF плоха.

0

Вам просто нужно указать имя хранимой процедуры и передавать в параметрах. Что-то вроде этого

var data = db.ExecuteStoreQuery<PropertySearchResultRow> 
(
    "mysp",new MySqlParameter("input1", 10),outParam 
); 
+0

Здесь ошибка: У Вас есть ошибка в вашем SQL синтаксиса; проверьте руководство, соответствующее версии вашего сервера MySQL, для правильного синтаксиса для использования рядом с 'mysp' –

-1

Вот мой пример кода работы с разъемом VS2012 и Mysql 6.8.3 надеюсь, что это помогает кто-то

public static IList<MyClass> GetCustOrderHist(string someParameter) 
    { 
     IList<MyClass> data = ((IObjectContextAdapter)TestDashboardEntities).ObjectContext.ExecuteStoreQuery<MyClass>("CALL CustOrderHist({0});", someParameter).ToList(); 

     return data; 
    } 

    public class MyClass 
    { 
     public string ProductName { get; set; } 
     public int TOTAL { get; set; } 
    } 
Смежные вопросы