问题描述
我正在尝试将存储过程与新的 Entity Framework Core 一起使用.我需要尽快开始新项目,这将是 ASP.Net 5,但不确定实体框架是否适合这项工作.该应用程序每分钟将触发多个存储过程,我需要输出参数.EF 对这个有用还是我应该使用 ADO.Net?
I'm trying to use stored procedures with new Entity Framework Core. I need to start new project soon which will be ASP.Net 5, but not sure if Entity Framework will fit for the job. The application will be triggering several stored procedures per minute and I need output parameters. Will EF be good for this or should I use ADO.Net?
我尝试过 FromSql 和 database.ExecuteSqlCommand 但没有成功.
I have tried FromSql and database.ExecuteSqlCommand but no luck.
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
关键字
It should work, but I believe you also need to include the parameter names and the OUT
keyword in the command statement
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;
这篇关于Entity Framework Core - 使用带有输出参数的存储过程的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!