2017-03-08 16 views
1

mysqlのストアドプロシージャのmysqlのパラメータでDatabase.ExecuteSqlCommandを使用するための正しい構文は何ですか?

var affectedRows = 
     context.Database.ExecuteSqlCommand("exec UpdateStatus @p_customerId, @p_id", 
      new MySqlParameter("p_customerId", "006"), 
      new MySqlParameter("p_id", 9)); 

取得MySqlException

型 'MySql.Data.MySqlClient.MySqlException' の未処理の例外を実行するには、EntityFramework.dll

で発生しました追加情報:あなたは持っていますSQL構文のエラー。私はUPDATEステートメントでストアドプロシージャ名を交換しようとすると行1

に近い「execのUpdateStatusを 『006』、9」を使用する 右 構文についてはMySQLサーバのバージョンに対応するマニュアルを確認してくださいできます。しかし、代わりにストアドプロシージャを呼びたいと思います。私は、コマンドからストアドプロシージャを呼び出すのでEntity Frameworkの5と6同じエラー

答えて

1

MySQLの構文を使用してみました

は、 "CALL" です。また、パラメータ名の先頭に「@」があるはずです。

だから、次のようにコードを変更する必要があります。

var affectedRows = 
    context.Database.ExecuteSqlCommand("CALL UpdateStatus (@p_customerId, @p_id)", 
     new MySqlParameter("@p_customerId", "006"), 
     new MySqlParameter("@p_id", 9)); 
+0

はありがとうございました!!!! – Ben

関連する問題