在DbContext中获取Queryable集合

时间:2016-12-25 14:45:14

标签: model-view-controller repository-pattern tag-cloud

我正在尝试使用MVC创建标记云。当我获得实现存储库接口的所有文档的Queryable集合时,我遇到了问题。

这是我的主要模特:

    public int Id { get; set; }
    public int CDAId { get; set; }
    public string Date { get; set; }
    public Clinics Clinic { get; set; }
    public Patients Patient { get; set; }
    public string Illness { get; set; }
    public string HisPreIll { get; set; }
    public string PasMedHis { get; set; }
    public string Medications { get; set; }
    public string Allergies { get; set; }
    public string SocHis { get; set; }
    public int PatientId { get; set; }
    public int ClinicId { get; set; }
     //Keywords
    public string Keywords { get; set; }

存储库接口:

 public interface IRepository<T> where T : class
{
    IEnumerable<T> GetAll();
    T GetById(object Id);
    void Insert(T obj);
    void Update(T obj);
    void Delete(Object Id);
    void Save();
}

和存储库类

public class Repository<T> : IRepository<T> where T : class
{
    private DocContext _db;
    private DbSet<T> _dbSet;

    public Repository()
    {
        _db = new DocContext();
        _dbSet = _db.Set<T>();
    }
    public IEnumerable<T> GetAll()
    {
        return _dbSet.ToList();
    }

    public T GetById(object Id)
    {
        return _dbSet.Find(Id);
    }

    public void Insert(T obj)
    {
        _dbSet.Add(obj);
    }
    public void Update(T obj)
    {
        _db.Entry(obj).State = EntityState.Modified;
    }
    public void Delete(object Id)
    {
        T getObjById = _dbSet.Find(Id);
        _dbSet.Remove(getObjById);
    }
    public void Save()
    {
        _db.SaveChanges();
    }
    protected virtual void Dispose(bool disposing)
    {
        if (disposing)
        {
            if (this._db != null)
            {
                this._db.Dispose();
                this._db = null;
            }
        }
    }
}

然后我尝试在DocContext中获取所有CDAS

public class DocContext : DbContext, IRepository
{

    public DocContext() : base("CDAEntities")
    {

    }
    public DbSet<CDA> CDAS { get; set; }
    public DbSet<Clinics> Clinics { get; set; }
    public DbSet<Patients> Patients { get; set; }

    **//Queryable collection of all docs that implement the repository interface**

    IQueryable<CDA> IRepository.CDAS
    {
        get { return CDAS; }
    }
}

问题出在 DocContext

如何正确获取文档集(我的模型CDA)而没有错误?

使用通用类型&#34; IRepository&#34;需要类型1的参数

&#39; IRepository&#34;在接口的显式声明中不是接口。

0 个答案:

没有答案