首先在实体framework6代码中使用存储库模式和TPT继承

时间:2016-10-19 07:22:27

标签: ef-code-first entity-framework-6 repository-pattern table-per-type

我不知道同时使用 TPT继承存储库模式在一起,所以我需要一个简单的例子。 我有一个这样的课程:

  public abstract class Person
{
    [Key]
    public int Id { get; set; }

    public string Name { get; set; }

    public string LName { get; set; }


    public string Address { get; set; }

}

另一个名为Doctor的类继承自Person:

  [Table("Doctors")]
public class Doctor:Person
{


    public string Code { get; set; }


    public bool IsAssistant { get; set; }}

现在我怎么能创建方法来选择这样的类型:Db.Persons.OfType<Doctor>().ToList();在我的reposytory中?

   public class Repository<T> : IRepository<T> where T : class
{
    private ClinicDbContext _Db;
    private DbSet<T> DbSet;


    public IEnumerable<T> GetAll()
    {
        throw new NotImplementedException();// What i should to write here?
    }
}
  

实际上你对使用它们的看法是什么?我没有找到任何关于它的例子......可能吗?

更新:我找到了答案。它就像这样:

    public class Repository<T> : IRepository<T> where T : class
{
    private ClinicDbContext _Db;
    private DbSet<T> DbSet;

    public IEnumerable<T> GetAll()
    {
        return DbSet.OfType<T>().ToList();
    }

}

但暂不知道:

       public t GetById(object Id)
    {
       return DbSet.OfType<T>().Find(Id)??????//Find is not working here
    }

0 个答案:

没有答案