gpt4 book ai didi

c# - EF不执行删除命令

转载 作者:行者123 更新时间:2023-11-30 18:04:27 28 4
gpt4 key购买 nike

我使用 Entity Framework 作为我的数据访问层。但是对于某些任务(例如批量删除),我想使用原始 SQL 命令。

但此时 EF 让我感到惊讶,因为它似乎执行了 DML,但实际上什么也没做。

如果我直接运行 sql,它会按预期执行并删除数据。那么我做错了什么?

    using (var db = new MyDbContext())
{
var sqlTime = string.Concat("DELETE FROM SYNCING_CONTENT WHERE ID in (SELECT SyncContent_Id FROM SYNCING WHERE EXPIRATION < GETDATE());");
var deleted = db.Database.ExecuteSqlCommand(sqlTime);

return deleted;
}

编辑:

    using (var db = new MyDbContext())
{
const string SQL_TIME = "DELETE FROM SYNCING_CONTENT WHERE ID in (SELECT SyncContent_Id FROM SYNCING WHERE EXPIRATION < GETDATE())";
var deleted = db.Database.ExecuteSqlCommand(SQL_TIME);

return deleted;
}

最佳答案

尝试删除 ;来自您的 SQL 字符串。

问题也可能是由于在您的 sql 字符串中传递了 GETDATE(),如果您将它作为 sql 参数传递,我知道这是一个问题。

尝试

const string SQL_TIME = @"DELETE FROM SYNCING_CONTENT WHERE ID in (SELECT SyncContent_Id FROM SYNCING WHERE EXPIRATION < {0})";
db.Database.ExecuteSqlCommand(SQL_TIME, DateTime.Now);

关于c# - EF不执行删除命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6149343/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com