我使用實體框架作爲我的數據訪問層。 但對於某些任務(例如批量刪除),我想使用原始SQL命令。EF不執行刪除命令
但是在這一點上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;
}
爲什麼使用string.concact爲一個字符串? – 2011-05-27 07:56:19
你說得對。 string.Concat不是必需的。但是這並不影響executeSqlCommand – BitKFu 2011-05-27 08:03:59
@BitKFu我從來沒有說過這是問題所在。如果這是問題,我會把它變成一個答案:) – 2011-05-27 08:07:16