[英]entity framework: delete WHERE in c# syntax missing (sqlite)
我正在使用實體框架來更改遠程表上的數據。
我做的一個工作電話是這樣的:
public async Task<List<PictureItems>?> GetUserThumbnailByuserId(string userid)
{
await InitializeAsync();
try
{
return await _table.GetAsyncItems().Where(x => x.BelongsToUserId == userid).ToListAsync();
}
catch (Exception e)
{
return null;
}
}
現在,我正在嘗試刪除 ID 匹配的項目。
但我能做的就是刪除正確的項目:
await _table.DeleteItemAsync(item);
但這只有在我將相同的項目插入 () 時才有效。 所以我可以獲得正確的項目,如果該項目不是 null 則插入到刪除中並刪除該項目。
但是當我已經在本地獲得 ID 時,我不想一直得到該項目,這只會造成不必要的流量。
所以我需要的是:
_table.DeleteItemAsync().Where(x => x.BelongsToUserId == userid).ToListAsync();
有人對我如何處理這個有任何幫助嗎?
最好,
傑
如果您事先知道要刪除的項目的主 ID,則可以簡單地實例化一個僅包含該 ID 的 object 並將其傳遞給 EF Core:
table.Remove(new Entity() { Id = <yourId> });
這消除了首先查詢數據的需要——如果數據庫上已經存在,EF Core 將刪除具有相應 ID 屬性的相應現有項。
當然,這是否適用於您的情況取決於 BelongsToUserId 是否是 EF 可以使用的關鍵,或者它是否只是一個常規屬性。
您有幾種選擇:
DbContext.RemoveRange(entities);
ExecuteSqlRaw
並以這種方式手動刪除您想要的對象: DbContext.Database.ExecuteSqlRaw("DELETE FROM PictureItems WHERE...");
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.