0

Entity Framework ExecuteStoreQuery を使用して、出力パラメーターで MySql ストアド プロシージャを呼び出しています。ストア プロシージャは、結果セットも返します。

次のエラーが表示されます。

ルーチン mydb.mysp の OUT または INOUT 引数 2 は、BEFORE トリガーの変数または NEW 疑似変数ではありません

なにが問題ですか?out params と resultset を組み合わせて 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 に答える