Я написал следующий запрос, который работал в ядре .net 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?
Другими словами, как мне теперь реализовать метод AddOrGet в EF-Core 3.0?