【发布时间】:2020-12-31 05:11:26
【问题描述】:
我正在尝试使用 Entity Framework Core 调用存储过程。存储过程有点复杂,所以我没有使用 LINQ。
这是我的代码:
using (IdentityProofContext dc = new IdentityProofContext())
{
SqlParameter[] @params =
{
new SqlParameter("@result", SqlDbType.Int) {Direction = ParameterDirection.Output}
};
dc.IdentityPersonalData.FromSqlRaw("Execute usp_GetIdentityProofStatus", @params).FirstOrDefaultAsync();
//var result = @params[0].Value;
//if (result > 0)
//{
// MiscEmails.sendEmails();
//}
}
这是我的存储过程:
ALTER PROCEDURE usp_GetStatus
(@result int OUTPUT)
AS
SELECT @result = COUNT(*)
FROM dbo.TestData
WHERE DATEDIFF(MINUTE, DateInserted, GETDATE()) < 120 --Number of minutes
AND STATUS IN ('test1' )
RETURN @result
非常感谢任何有关使用 Entity Framework Core 调用存储过程以返回单个值的帮助。
我也尝试查看此链接:
Entity Framework Core - Using Stored Procedure with output parameters
我没有看到任何内容:ExecuteSqlCommand。截图如下:
这些是我正在使用的框架:
我正在使用 .NET Core 控制台应用程序,这些是我的 .cs 文件中的 using 语句:
using System;
using System.Data;
using EVitalsStatusCheck.DAL.DB;
using Microsoft.EntityFrameworkCore;
using EVitalsStatusCheck.DAL;
using System.Data.SqlClient;
【问题讨论】:
-
您不应该删除您的原始帖子,只是回复了编辑或评论
-
您是否还在使用 Entity Framework 3?当前版本是 6.2
-
相对于 IdentityPersonalData 实体,结果代表什么?它需要映射。如果您无法映射它,只需使用 Dapper 并通过在单个实体之外工作来省去您的麻烦。
-
我尝试这样做,但仍然是说你的问题很接近,问一个新的
-
我使用的是实体框架6.4.4
标签: c# entity-framework asp.net-core entity-framework-core