EF - 提取每个层次结构中特定类型 table 的所有记录
EF - Extract all record of specific type table per hierarchy
在我的 EF 上下文中,我有一个 classes 层次结构,使用每个层次结构方法 table 进行管理。
因此我有一个基础摘要 class 和一堆从中派生的 classes:
public abstract class BaseClass
{
[Required]
public int Id {get; set;}
...
}
public abstract class ExtendedClass1 : BaseClass
{
...
}
public abstract class ExtendedClass2 : BaseClass
{
...
}
classes配置如下:
public class ExtendedClass1Configuration :
EntityTypeConfiguration<ExtendedClass1>
{
...
this.Map(m => m.Requires("Discriminator").HasValue("ExtendedClass1"));
}
为了访问数据库,我使用了从通用存储库派生的存储库:
public abstract class Repository<TEntity> : IRepository<TEntity> where TEntity: BaseClass
{
protected DbContext context;
DbSet<TEntity> GetSet()
{
return this.context.Set<TEntity>();
}
public virtual void Add(TEntity entity)
{
this.GetSet().Add(entity);
}
...
}
public class BaseClassRepository : Repository<BaseClass>, IBaseClassRepository
{
...
}
我想在我的存储库中添加一个方法,该方法将提取特定子类型的所有 classes(例如类型 ExtendedClass1
的所有记录)。
我尝试了如下一些方法,但没有成功:
public IEnumerable<BaseClass> GetByType(Type type) {
return context.Set<BaseClass>().OfType<type>();
}
这给了我以下编译错误:
The type or namespace name 'type' could not be found
我现在正在尝试的另一种方法是这样的:
public IEnumerable<TBaseClass> GetByType() where TBaseClass : BaseClass {
return context.Set<BaseClass>().OfType<TBaseClass>();
}
我做错了什么?我该如何实施?
public IEnumerable<BaseClass> GetByType(Type type)
{
return context.Set<BaseClass>().OfType<type>();
}
不正确,使用
public IEnumerable<BaseClass> GetByType<T>()
{
return context.Set<BaseClass>().OfType<T>();
}
类型参数 ftw。
在我的 EF 上下文中,我有一个 classes 层次结构,使用每个层次结构方法 table 进行管理。
因此我有一个基础摘要 class 和一堆从中派生的 classes:
public abstract class BaseClass
{
[Required]
public int Id {get; set;}
...
}
public abstract class ExtendedClass1 : BaseClass
{
...
}
public abstract class ExtendedClass2 : BaseClass
{
...
}
classes配置如下:
public class ExtendedClass1Configuration :
EntityTypeConfiguration<ExtendedClass1>
{
...
this.Map(m => m.Requires("Discriminator").HasValue("ExtendedClass1"));
}
为了访问数据库,我使用了从通用存储库派生的存储库:
public abstract class Repository<TEntity> : IRepository<TEntity> where TEntity: BaseClass
{
protected DbContext context;
DbSet<TEntity> GetSet()
{
return this.context.Set<TEntity>();
}
public virtual void Add(TEntity entity)
{
this.GetSet().Add(entity);
}
...
}
public class BaseClassRepository : Repository<BaseClass>, IBaseClassRepository
{
...
}
我想在我的存储库中添加一个方法,该方法将提取特定子类型的所有 classes(例如类型 ExtendedClass1
的所有记录)。
我尝试了如下一些方法,但没有成功:
public IEnumerable<BaseClass> GetByType(Type type) {
return context.Set<BaseClass>().OfType<type>();
}
这给了我以下编译错误:
The type or namespace name 'type' could not be found
我现在正在尝试的另一种方法是这样的:
public IEnumerable<TBaseClass> GetByType() where TBaseClass : BaseClass {
return context.Set<BaseClass>().OfType<TBaseClass>();
}
我做错了什么?我该如何实施?
public IEnumerable<BaseClass> GetByType(Type type)
{
return context.Set<BaseClass>().OfType<type>();
}
不正确,使用
public IEnumerable<BaseClass> GetByType<T>()
{
return context.Set<BaseClass>().OfType<T>();
}
类型参数 ftw。