Fra*_*e B 9 c# generics entity-framework
我试图覆盖该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#编译器要我做什么呢?
这是蹩脚的......我使用的是6.0.0版的Entity Framework.
在6.0.0中(在对Code Plex项目的历史进行深入研究之后,我发现Set<TEntity>()
当时并非 virtual
如此.
羞辱编译器不能这么说,而不是把我送到房子周围.
无论如何,将实体框架更新到6.1.x(它所在的位置 virtual
),解决了这个问题;
Update-Package EntityFramework
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1048 次 |
最近记录: |