Sql server 如何从.NETCore3.0中的存储过程中获取单个字符串结果

Sql server 如何从.NETCore3.0中的存储过程中获取单个字符串结果,sql-server,stored-procedures,entity-framework-core,Sql Server,Stored Procedures,Entity Framework Core,我有一个基于条件返回字符串值的存储过程,它有或4个参数。我在执行存储过程和检索结果时面临挑战 我找到了从同一个模型的insert查询返回结果的所有地方。请分享您对此的建议 这是我的存储过程: CREATE PROCEDURE [dbo].[sp_test] (@param1 INT, @param2 NVARCHAR(100), @param3 INT, @param4 NVARCHAR(50)) AS BEGIN IF (@param1 =

我有一个基于条件返回字符串值的存储过程,它有或4个参数。我在执行存储过程和检索结果时面临挑战

我找到了从同一个模型的insert查询返回结果的所有地方。请分享您对此的建议

这是我的存储过程:

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
时出现的错误:

使用不可组合的SQL调用了FromSqlRaw或FromSqlInterpolated,并在其上组合了一个查询。考虑调用“代码> >可枚举的< /代码>,在FROXSLBRAW或FROSQLILIDATION方法之后在客户端执行组合。

将其改写为:

CREATE PROCEDURE [dbo].[sp_test](@param1 INT,@param2 NVARCHAR(100),@param3 INT,@param4 NVARCHAR(50), @STR_OUT NVARCHAR(256) OUTPUT)     
AS

BEGIN

    IF (@param1='')
    BEGIN
        SET @STR_OUT ='ok';
    END
    else
        SET @STR_OUT = 'not ok';

并读取最后一个参数的输出值。

旁注:存储过程不应使用
sp
前缀。微软已经这样做了,而且你确实有可能在将来的某个时候发生名称冲突。最好只是简单地避免使用
sp.
并使用其他东西作为前缀,或者根本不使用前缀!IgnoreQueryFilters()无法修复此问题。但是在不使用实体的情况下,可以将存储过程结果转换为实体Frameowrk CORE 3.0中的字符串??能否请您展示一下您是如何尝试使用的。FromSqlRaw?我想知道如何使用DB上下文检索它