【发布时间】:2016-12-16 21:35:58
【问题描述】:
在 EF Core 中,使用 dbContext,如何调用带有输入和输出参数的存储过程?我知道基本的 gyst 是:
Set<blah>.FromSql("storedProcName @p0 = {0}, @p1 = {1}", p0, p1);
但是,既然没有实体,我应该为“blah”输入什么,它只是一个布尔输出......我如何获得所说的输出?
编辑:这个问题并不能解决问题。
DAMN...终于让它工作了...您必须使用大括号语法并在最后一个参数上添加 OUTPUT 关键字。
SqlParameter paramOut = new SqlParameter("@p5", SqlDbType.Bit) { Direction = ParameterDirection.Output };
this.Database.ExecuteSqlCommand("exec usp_xxx @p1={0}, @p2={1}, @p3={2}, @p4={3}, @p5={4}, @exist={5} OUTPUT",
p1, p2, p3, p4, p5, paramOut);
【问题讨论】:
-
不是有
Database对象脱离上下文吗?喜欢context.Database.SqlQuery("..."); -
@Jonesopolis -- 嗯......好吧,这可能会解决问题:),但是 out 参数呢?它似乎不像示例所示那样接受 SqlParameter 对象。
-
@Eris,你看到关于 OUT 参数的任何信息吗?
-
@SledgeHammer 第二个答案展示了如何根据 DBContext 信息创建标准 SQLCommand 对象,它允许您使用普通参数并设置
ParameterDirection.Output
标签: c# stored-procedures entity-framework-core