【发布时间】:2021-04-01 07:50:25
【问题描述】:
我有一个存储过程,它根据条件返回一个字符串值,它有 4 个参数。我在执行存储过程和检索结果方面面临挑战。
我到处都能找到从同一模型的插入查询返回结果的地方。请分享您对此的建议。
这是我的存储过程:
CREATE PROCEDURE [dbo].[sp_test]
(@param1 INT,
@param2 NVARCHAR(100),
@param3 INT,
@param4 NVARCHAR(50))
AS
BEGIN
IF (@param1 = '')
BEGIN
SELECT 'ok' AS output
END
ELSE
SELECT 'not ok' AS output
END
请建议如何使用 Entity Framework Core 3.0 DbContext 获取此查询结果。
我尝试使用.FromSqlRaw时遇到的错误:
FromSqlRaw 或 FromSqlInterpolated 是使用不可组合的 SQL 调用的,并且查询在其上进行组合。考虑在 FromSqlRaw 或 FromSqlInterpolated 方法之后调用
AsEnumerable在客户端执行合成。
【问题讨论】:
-
旁注:您应该不为您的存储过程使用
sp_前缀。微软有reserved that prefix for its own use (see Naming Stored Procedures),你确实会在未来某个时候冒着名称冲突的风险。 It's also bad for your stored procedure performance。最好只是简单地避免sp_并使用其他东西作为前缀 - 或者根本不使用前缀! -
IgnoreQueryFilters() 确实解决了这个问题。但是在不使用实体的情况下,可以在 Entity Frameowrk CORE 3.0 中获取存储过程结果到字符串??
-
您能否展示一下您是如何尝试使用 .FromSqlRaw 的?
标签: sql-server stored-procedures entity-framework-core