0

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

我收到以下错误。

例程 mydb.mysp 的 OUT 或 INOUT 参数 2 不是 BEFORE 触发器中的变量或 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;
4

3 回答 3

2

最后最终使用 ado.net MySqlCommand 调用存储的过程并获取输出值。Mysql 和 EF 集成不好。

于 2012-06-05T10:03:05.237 回答
0

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

var data =  db.ExecuteStoreQuery<PropertySearchResultRow>
(
    "mysp",new MySqlParameter("input1", 10),outParam
);
于 2012-04-13T13:26:29.427 回答
-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; }
    }
于 2014-10-12T19:39:28.210 回答