簡體   English   中英

EF-提取每個層次結構中特定類型表的所有記錄

[英]EF - Extract all record of specific type table per hierarchy

在我的EF上下文中,我有一個類的層次結構,使用每個層次結構的表進行管理。

因此,我有一個基礎抽象類和從中派生的一堆類:

public abstract class BaseClass
{
    [Required]
    public int Id {get; set;}

    ...
}

public abstract class ExtendedClass1 : BaseClass
{

    ...

}

public abstract class ExtendedClass2 : BaseClass
{

    ...

}

這些類的配置如下:

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
{

    ...

}

我想在存儲庫中添加一個方法,該方法將提取特定子類型的所有類(例如, ExtendedClass1類型的所有記錄)。

我嘗試了以下一些方法,但未成功:

public IEnumerable<BaseClass> GetByType(Type type) {
    return context.Set<BaseClass>().OfType<type>();
}

這給了我以下編譯錯誤:

找不到類型或名稱空間名稱“類型”

我現在正在嘗試的另一種方法是這樣的:

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>();
}

Typeparams ftw。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM