我正在使用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;
答案 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; }
}