我有一个使用 EF Core 3.1 的 .NET Core 3.1 程序集项目,它启用了可为空的引用类型。我创建了以下界面:
public interface IMyDbContext
{
DbSet<TEntity> Set<TEntity>() where TEntity : class;
}
我在我的上下文类中实现了这个接口:
public sealed class MyDbContext : DbContext, IMyDbContext
{
}
由于 DbContext 基类已经有一个带有这个签名的方法,我实际上不需要在 MyDbContext 类中实现任何东西。
我收到以下警告:
方法“DbSet Microsoft.EntityFrameworkCore.DbContext.Set()”的类型参数“TEntity”的约束为空性与接口方法“DbSet MyProject.IMyDbContext.Set()”的类型参数“T”的约束不匹配。考虑改用显式接口实现。
我确认这是由我的项目使用可为空的引用类型引起的,而 EF Core 并没有通过从项目文件中删除以下内容:
<Nullable>enable</Nullable>
一旦我这样做了,警告就消失了。
我尝试将界面更改如下:
DbSet<TEntity> Set<TEntity>() where TEntity : class?;
但没有运气。
有没有办法让这个警告消失而不从我的项目中删除可为空的引用类型?