2017-04-04 6 views
1

残念ながら、ExecuteSqlCommandのドキュメントは表示されません。FromSqlのドキュメントのみが見つかりました。 ExecuteSqlCommandを使用して、影響を受けた行を返す名前付きパラメータを使用して、ストアドプロシージャを正常に呼び出すことができます。EFコアでDbParameter w/ExecuteSqlCommandを使用

ただし、1つのDbParameterのDirectionプロパティをParameterDirection.Outputに変更しようとしています。これは動作するようには見えず、とにかくこの使用法の例は見つけられません。私が見た最も近いものはEF Core GitHubリポジトリのissue #3115でしたが、outパラメータの使用はありませんでした。

もちろん、DbCommandを使用してこれを行うことはできますが、ExecuteSqlCommandはDbParameterを名前付きパラメータにのみ使用し、方向は無視されますか?もしそうなら、理想的にはこれはどこかで文書化されるべきです - 多分Raw SQL Queriesの記事を拡張することができます。

+0

AFAIK、方向をoutに設定するだけで '.FromSql()'が動作するはずです。使用しているコードを示す[新しい問題を提出する](https://github.com/aspnet/EntityFramework/issues/new)が必要な場合があります。 – bricelam

+0

MySQL用に動作しない[Connector/NET bug](https://bugs.mysql.com/bug.php?id=75267)があります。 –

答えて

1

これはデータベースプロバイダ固有の問題です。これはMySQLでは機能しませんが、SQL Serverでは機能します。以下は、後者の使用を示すコードです:

var outParam = new SqlParameter("@ParamOut", DbType.Int32) 
    { Direction = ParameterDirection.Output }; 

ctx.Database.ExecuteSqlCommand("EXEC dbo.MyTest @ParamOut OUTPUT", outParam);