C# 无法从实体框架核心运行存储过程
我在EF Core中有以下代码来运行存储过程:C# 无法从实体框架核心运行存储过程,c#,stored-procedures,entity-framework-core,ef-core-2.0,C#,Stored Procedures,Entity Framework Core,Ef Core 2.0,我在EF Core中有以下代码来运行存储过程: TenandId = user.TenantId; userName = user.UserName; updateDate = DateTime.Now; TimeStart = 139601; TimeEnd = 139612; RequestId = id; _context.TempRequest.FromSql("EXEC dbo.AddRequest_To_TempRequest @TimeStart, @TimeEnd, @Tena
TenandId = user.TenantId;
userName = user.UserName;
updateDate = DateTime.Now;
TimeStart = 139601;
TimeEnd = 139612;
RequestId = id;
_context.TempRequest.FromSql("EXEC dbo.AddRequest_To_TempRequest @TimeStart, @TimeEnd, @TenantId, @UpdateDate, @UserName, @RequestId",
new SqlParameter("@TimeStart", TimeStart),
new SqlParameter("@TimeEnd", TimeEnd),
new SqlParameter("@TenantId", TenandId),
new SqlParameter("@UpdateDate", updateDate),
new SqlParameter("@UserName", userName),
new SqlParameter("@RequestId", RequestId));
但当我运行它时,它不工作,但它也不会抛出任何错误
我犯了什么错误吗
谢谢在原始SQL表示查询时使用。该方法创建LINQ/EF核心查询,但与往常一样,IQueryable
/IEnumerable
在迭代之前不会执行它(使用foreach
,ToList()
等),即所谓的延迟执行。这应该解释为什么“它不起作用,但也没有抛出任何错误”
对于非查询原始SQL语句,EF Core提供了另一种方法(或EF Core 3.0+中的ExecuteSqlRaw
/ExecuteSqlInterpolated
),可立即执行
这两种方法都可用于在执行时调用存储过程。看起来后者更适合您的场景,因此替换
_context.TempRequest.FromSql
与
我应该做这项工作 在原始SQL表示查询时使用。该方法创建LINQ/EF核心查询,但与往常一样,IQueryable
/IEnumerable
在迭代之前不会执行它(使用foreach
,ToList()
等),即所谓的延迟执行。这应该解释为什么“它不起作用,但也没有抛出任何错误”
对于非查询原始SQL语句,EF Core提供了另一种方法(或EF Core 3.0+中的ExecuteSqlRaw
/ExecuteSqlInterpolated
),可立即执行
这两种方法都可用于在执行时调用存储过程。看起来后者更适合您的场景,因此替换
_context.TempRequest.FromSql
与
我应该做这项工作