[英]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.