У меня есть проект сборки .NET Core 3.1 с использованием EF Core 3.1, в котором включены ссылочные типы, допускающие значение NULL. Я создал следующий интерфейс:
public interface IMyDbContext
{
DbSet<TEntity> Set<TEntity>() where TEntity : class;
}
Я реализую этот интерфейс в своем классе контекста:
public sealed class MyDbContext : DbContext, IMyDbContext
{
}
Поскольку в базовом классе DbContext уже есть метод с этой сигнатурой, мне фактически не нужно ничего реализовывать в классе MyDbContext.
Я получаю следующее предупреждение:
Возможность обнуления в ограничениях для параметра типа 'TEntity' метода 'DbSet Microsoft.EntityFrameworkCore.DbContext.Set ()' не соответствует ограничениям для параметра типа 'T' метода интерфейса 'DbSet MyProject.IMyDbContext.Set ()'. Вместо этого рассмотрите возможность использования явной реализации интерфейса.
Я подтвердил, что это вызвано тем, что мой проект использует ссылочные типы, допускающие значение NULL, а EF Core не удаляет из файла проекта следующее:
<Nullable>enable</Nullable>
Как только я это сделал, предупреждение исчезло.
Я пытался изменить интерфейс следующим образом:
DbSet<TEntity> Set<TEntity>() where TEntity : class?;
Но не повезло.
Есть ли способ убрать это предупреждение, не удаляя из моего проекта ссылочные типы, допускающие значение NULL?