【问题标题】:Why does EF Core always return -1 with this stored procedure?为什么 EF Core 总是使用此存储过程返回 -1?
【发布时间】:2017-04-28 20:21:32
【问题描述】:

我正在尝试针对本地 2016 数据库使用 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

【问题讨论】:

  • 这些建议有帮助吗? stackoverflow.com/questions/14735477/…
  • 您的 SQL 不执行任何 DDL 操作,您应该将其重新创建为 UDF 或 VIEW。
  • ^ 这有什么帮助?这是一个问答网站,而不是告诉人们他们做错了什么的地方。是的,有很多人应该这样做,你可以说任何代码。但是,如果你没有什么好话或有帮助的话,那就什么也别说。

标签: entity-framework .net-core entity-framework-core localdb


【解决方案1】:

ExecuteSqlCommand 在内部调用 IRelationalCommand.ExecuteNonQuery。它返回受影响的行数。

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

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

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

【讨论】:

  • 太好了,真是个好答案!非常感谢你的帮助!我周五离开时真的很担心这个,但我说为什么不把它发布到 Stack 看看我是否幸运。星期一将是美好的一天!
  • 如果有能力更改存储过程,这是一个很好的答案。
猜你喜欢
  • 2014-06-18
  • 2012-09-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多