我编写了以下查询,该查询在.net core 2.2中工作
public static TEnt AddOrGet<TEnt, TKey>(this DbSet<TEnt> dbSet, TEnt entity, Func<TEnt, TKey> predicate) where TEnt : class
{
IQueryable<TEnt> exists = dbSet.Where(c => predicate(entity).Equals(predicate(c)));
return exists.Count() > 0 ? exists.First() : dbSet.Add(entity).Entity;
}
我正在如下使用。
DocumentMetadata documentMetadata = new DocumentMetadata()
{
Name = metadata.Key
};
masterContext.DocumentMetadata.AddOrGet(documentMetadata, x => x.Name);
升级到EF Core 3.0后,它按照报告的以下错误停止工作。 https://github.com/aspnet/EntityFrameworkCore/issues/18020
现在我该如何翻译它,以便EF core 3.0可以将其正确翻译为SQL?
换句话说,如何在EF-Core 3.0中实现AddOrGet方法?