Whi*_*ler 7 asp.net entity-framework entity-framework-core
我正在尝试使用新的Entity Framework Core存储过程.我需要很快启动新项目,这将是ASP.Net 5,但不确定实体框架是否适合这项工作.应用程序将每分钟触发几个存储过程,我需要输出参数.EF会对此有好处还是我应该使用ADO.Net?
我试过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);
}
Run Code Online (Sandbox Code Playgroud)
Nko*_*osi 10
它应该工作,但我相信你还需要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;
Run Code Online (Sandbox Code Playgroud)
小智 6
**This is a working example**
1) Create sample SP
--exec [dbo].sampleCalc 100,0,''
CREATE PROCEDURE[dbo].sampleCalc
@inputPara int,
@outputPara1 INT OUTPUT,
@outputPara2 varchar(50) OUTPUT
AS
BEGIN
set @outputPara1 = @inputPara + 100
set @outputPara2 = 'result is ' + convert(varchar(50), @outputPara1)
print @outputPara1
print @outputPara2
END
2) C#
var param = new SqlParameter[] {
new SqlParameter() {
ParameterName = "@inputPara",
SqlDbType = System.Data.SqlDbType.Int,
Direction = System.Data.ParameterDirection.Input,
Value = 100
},
new SqlParameter() {
ParameterName = "@outputPara1",
SqlDbType = System.Data.SqlDbType.Int,
Direction = System.Data.ParameterDirection.Output,
},
new SqlParameter() {
ParameterName = "@outputPara2",
SqlDbType = System.Data.SqlDbType.VarChar,
Direction = System.Data.ParameterDirection.Output,
Size = 50
}};
var sql = "exec sampleCalc @inputPara, @outputPara1 OUT, @outputPara2 OUT";
var resultObj = _context.Database.ExecuteSqlRaw(sql, param.ToArray());
var out1Value = param[1].Value.ToString();
var out2Value = param[2].Value.ToString();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6187 次 |
| 最近记录: |