我遇到过在抽象泛型类中使用ExecuteDelete的问题。谁能解释一下在什么情况下不能使用ExecuteDelete和ExecuteUpdate?Tagret框架设置为.NET 7
下面是我的代码:
using Microsoft.EntityFrameworkCore;
namespace ProjectX.Common.Repositories;
public abstract class BaseRepository<T, V> : IRepository<T, V>
where T : Entity
where V : struct
{
protected readonly DbContext _context;
public BaseRepository(DbContext context)
{
_context = context;
}
public virtual async Task<bool> DeleteAsync(T entity, CancellationToken cancellationToken = default)
{
var deleted = await _context.Set<T>()
.Where(t => t.Id.Equals(entity.Id))
.ExecuteDeleteAsync(); // Here is the problem. This method cannot be found. Target Framework is .Net 7 and EF Core version is 7.0.7
return deleted > 0;
}
}
字符串
EF核心版本:7.0.7数据库提供者:Microsoft.EntityFrameworkCore.SqlServer目标框架:NET 7.0 IDE:Visual Studio 2022最新版本
2条答案
按热度按时间7gcisfzg1#
缺少对
Microsoft.EntityFrameworkCore.Relational
的包引用vmpqdwk32#
请参阅:https://learn.microsoft.com/en-us/ef/core/what-is-new/ef-core-7.0/whatsnew#inheritance-and-multiple-tables
“向查询添加过滤器通常意味着TPC和TPT策略的操作都将失败。这也是因为可能需要从多个表中删除行。例如,此查询:
字符串
使用TPC或TPT时失败。”
Issue #10879跟踪添加对在这些场景中自动发送多个命令的支持。如果你希望看到这个问题得到实施,请为它投票。
t;dr