問題

私は新しいEntity Framework Coreでストアドプロシージャを使用しようとしています。すぐにASP.Net 5になる新しいプロジェクトを開始する必要がありますが、Entity Frameworkがジョブに適合するかどうかはわかりません。アプリケーションは毎分複数のストアドプロシージャをトリガーし、出力パラメータが必要です。

私はFromSqlとdatabase.ExecuteSqlCommandを試しましたが、運はありません。

 using (AppDbContext db = factory.Create())
        {
            var in1 = new SqlParameter
            {
                ParameterName = "ParamIn1",
                DbType = System.Data.DbType.Int64,
                Direction = System.Data.ParameterDirection.Input
            };
            var in2 = new SqlParameter
            {
                ParameterName = "ParamIn2",
                DbType = System.Data.DbType.String,
                Direction = System.Data.ParameterDirection.Input
            };
            var out1 = new SqlParameter
            {
                ParameterName = "ParamOut1",
                DbType = System.Data.DbType.Int64,
                Direction = System.Data.ParameterDirection.Output
            };
            var out2 = new SqlParameter
            {
                ParameterName = "ParamOut2",
                DbType = System.Data.DbType.String,
                Direction = System.Data.ParameterDirection.Output
            };

            var result = db.Database.ExecuteSqlCommand("exec spTestSp", in1, in2, out1, out2);
        }
 

  ベストアンサー

それはうまくいくはずですが、コマンドステートメントにパラメータ名とOUTキーワードを含める必要があると思います

 var sql = "exec spTestSp @ParamIn1, @ParamIn2, @ParamOut1 OUT, @ParamOut2 OUT";
var result = db.Database.ExecuteSqlCommand(sql, in1, in2, out1, out2);

var out1Value = (long) out1.Value;
var out2Value = (string) out2.Value;
 

  同じタグがついた質問を見る

asp.netentity-frameworkentity-framework-core