[英]Update a List of entries using a List of ID's in EntityFramework
我正在使用以下代碼在List<string>
存儲connectionID的List<string>
:
List<string> connectionIds =
connectedUsers.Where(x => x.UserId == userId).Select(x => x.ConnectionId).ToList();
我需要更新數據庫,以便在找到相應的ID時將連接狀態設置為false
。 到目前為止,我使用以下代碼:
if (connectionIds.Any())
{
foreach (string connectionId in connectionIds)
{
Connection curConn = db.Connection.FirstOrDefault(x => x.ConnectionID == connectionId);
if (curConn != null)
curConn.Connected = false;
db.SaveChanges();
}
}
但是,這會為每個連接調用DB ...有沒有簡單的方法在更簡單的過程中更新連接?
您可以使用Contains方法。 這將導致單個查詢以加載連接對象。 獲得查詢結果后,循環結果以更新Connected
標志,然后保存更改。
List<string> connectionIds = ...;
if (connectionIds.Any()) {
var data = db.Connection
.Where(x => connectionIds.Contains(x.ConnectionID))
.ToList();
foreach (var item in data) {
item.Connected = false;
}
db.SaveChanges();
}
您希望使用EF在一個SQL語句中執行批量更新。 EF不直接支持這一點。 請參閱此處了解可能的解決方案
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.