ASP.NET MVC EF使用Out参数调用MySQL存储过程

时间:2012-04-13 13:22:20

标签: asp.net mysql entity-framework stored-procedures

我正在使用Entity Framework ExecuteStoreQuery来调用带有输出参数的MySql存储过程。存储过程还返回结果集。

我收到以下错误。

对于例程mydb.mysp,

OUT或INOUT参数2不是BEFORE触发器中的变量或NEW伪变量

有什么问题?是否有更好的方法来调用MySql sp并混合使用params和resultset?

以下是代码

     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;

3 个答案:

答案 0 :(得分:2)

最后最终使用ado.net MySqlCommand调用存储过程并获取out值。 Mysql和EF集成很糟糕。

答案 1 :(得分:0)

您只需指定存储过程的名称并传入参数即可。像这样的东西

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

答案 2 :(得分:-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; }
    }