我试图覆盖该DbContext.Set<TEntity>()方法.
它的签名是:
public virtual DbSet<TEntity> Set<TEntity>() where TEntity : class
Run Code Online (Sandbox Code Playgroud)
首先我尝试了这个:
public override DbSet<TEntity> Set<TEntity>()
{
return base.Set<TEntity>();
}
Run Code Online (Sandbox Code Playgroud)
...但我收到错误:
类型'TEntity'必须是引用类型才能在泛型类型或方法'System.Data.Entity.DbContext.Set()'中将其用作参数'TEntity'
...所以我尝试指定它是一个引用类型:
public override DbSet<TEntity> Set<TEntity>() where TEntity: class
{
return base.Set<TEntity>();
}
Run Code Online (Sandbox Code Playgroud)
......我现在得到:
覆盖和显式接口实现方法的约束是从base方法继承的,因此不能直接指定它们.
......如果我拿走它,我会回到第一个错误.
那么C#编译器要我做什么呢?