Entity framework 为什么EF Core总是使用此存储过程返回-1?

Entity framework 为什么EF Core总是使用此存储过程返回-1?,entity-framework,.net-core,entity-framework-core,localdb,Entity Framework,.net Core,Entity Framework Core,Localdb,我正在尝试对本地2016 DB使用EF Core(最新版本),每次都会得到-1。我不知道我做错了什么 我知道它正在进入数据库。我查过了 int returnCode = _dbContext.Database.ExecuteSqlCommand("CheckReceivedNotificationDuplicate @p0, @p1, @p2", parameters: new[] { sendMessage.MESSAGE_TEMPLATE_NAME, sendMessage.MESSAGE

我正在尝试对本地2016 DB使用EF Core(最新版本),每次都会得到
-1
。我不知道我做错了什么

我知道它正在进入数据库。我查过了

int returnCode = _dbContext.Database.ExecuteSqlCommand("CheckReceivedNotificationDuplicate @p0, @p1, @p2", 
parameters: new[] { sendMessage.MESSAGE_TEMPLATE_NAME, sendMessage.MESSAGE_SUBJECT, sendMessage.MESSAGE_TEXT_SUMMARY });
存储过程:

ALTER PROCEDURE [dbo].[CheckReceivedNotificationDuplicate]
@MESSAGE_TEMPLATE_NAME nvarchar(100),
@MESSAGE_SUBJECT nvarchar(255),
@MESSAGE_TEXT_SUMMARY nvarchar(4000)
AS  DECLARE @NMID Int
BEGIN   
IF  EXISTS (SELECT 1 FROM dbo.Notification WHERE MESSAGE_TEMPLATE_NAME = @MESSAGE_TEMPLATE_NAME
                and MESSAGE_SUBJECT = @MESSAGE_SUBJECT AND ReceiveTimeEST > dateadd(minute,-5, dbo.GetGMTtoEST(getutcdate())))
BEGIN 
    IF  EXISTS (SELECT 1 FROM dbo.Notification WHERE MESSAGE_TEMPLATE_NAME = @MESSAGE_TEMPLATE_NAME
                and MESSAGE_SUBJECT = @MESSAGE_SUBJECT AND MESSAGE_TEXT_SUMMARY = @MESSAGE_TEXT_SUMMARY
                AND ReceiveTimeEST > dateadd(minute,-5, dbo.GetGMTtoEST(getutcdate())))
        RETURN -99
    ELSE
        RETURN 0
END
ELSE
    RETURN 0
END

ExecuteSqlCommand
内部调用。它返回受影响的行数

要从存储过程返回任意值,请将输出参数添加到其声明和
ExecuteSqlCommand
调用中:

var outParameter = new SqlParameter("@outParameter", DbType.Int32)
{
    Direction = ParameterDirection.Output
};

context.Database.ExecuteSqlCommand("exec GetFoo @outParameter OUT", outParameter);

这些建议有帮助吗?您的SQL不执行任何DDL操作,您应该将其重新创建为UDF或视图。^这有什么帮助?这是一个问答网站,不是一个告诉人们他们做错了事情的地方。是的,有很多人应该这样做,你可以说任何代码。但是,如果你没有什么好的或有用的话要说,那就什么也别说。太好了,这是一个多么好的回答啊!非常感谢你的帮助!我周五离开的时候真的很担心这个问题,但我说为什么不把它贴到Stack上,看看我是否幸运。星期一将是个好日子!如果能够更改存储过程,这是一个很好的答案。