drm*_*sst 3 c# entity-framework-core
为什么没有返回输出值?
使用 EF Core 2 (2.1.0-preview-final) 作为通过代码优先建模管理架构的平台,我想添加其他数据库对象,例如 SP。这本身就是一段旅程,但是这里主题下的挑战是使用 context.Database.ExecuteSqlCommandAsync() 执行 SP 并检索 OUTPUT 参数值。
这是成功执行 SP 的代码,但是永远不会返回输出值。你会认为设置参数的方向就足够了。
public async Task AddAsync(Models.Filename entity)
{
SqlParameter name = new SqlParameter("@Name", entity.Name);
SqlParameter idOut = new SqlParameter
{
ParameterName = "@Id",
SqlDbType = System.Data.SqlDbType.BigInt,
Direction = System.Data.ParameterDirection.Output
};
using (var db = new MetaDataDbContext())
{
await db.Database.ExecuteSqlCommandAsync("[dbo].[AddFilename] @Name, @Id", name, idOut);
}
entity.Id = Convert.ToInt64(idOut.Value);
}
Run Code Online (Sandbox Code Playgroud)
解决问题所需要做的就是将 T-SQL 语句更改为 "[dbo].[AddFilename] @Name, @Id OUTPUT"
EF6 - ExecuteSqlCommandAsync - 获取返回参数(声明标量变量错误)看起来很有希望,但它错过了一个关键部分,即 T-SQL 部分必须包含目标参数的 OUTPUT 关键字。
为什么 EF Core 总是使用此存储过程返回 -1?,事后看来提供了解决方案,但是它的名称(标题)没有出现在我的搜索结果中。
哼!
| 归档时间: |
|
| 查看次数: |
5007 次 |
| 最近记录: |