我目前正在实施EF6来替换当前存在的ADO连接。
我读过有关为什么我应该/不应该使用存储库模式的文章。
但是我仍然不确定如何正确调用存储库模式。
我的项目分层为:
在DAL中,我将EF6连接添加到我的数据库。 我创建了一个IRepository和Repository类。
业务层应该是调用Repository类的吗? 如果是这样,我在这里错过了如何调用它的连接。
存储库类:
public class MyRepository<T> : IRepository<T> where T : class
{
protected DbSet<T> DbSet;
protected DbContext _context;
public MyRepository(DbContext dataContext)
{
_context = dataContext;
DbSet = dataContext.Set<T>();
}
#region IRepository
public int Save()
{
return _context.SaveChanges();
}
public void Insert(T entity)
{
DbSet.Add(entity);
}
public void Delete(T entity)
{
DbSet.Remove(entity);
}
public IQueryable<T> SearchFor(System.Linq.Expressions.Expression<Func<T, bool>> predicate)
{
return DbSet.Where(predicate);
}
public IQueryable<T> GetAll()
{
return DbSet;
}
public T GetById(int id)
{
return DbSet.Find(id);
}
#endregion
}
我的目标是让MyRepository处理我在EF中添加的6个左右的表。
我缺少的是如何在我的业务访问层中实现此类。
我收到错误 &#39; MyEFConn&#39;是一种&#39;类型&#39;但用作变量&#39;
我实现它的尝试是:
MyRepository<"table from EF"> users = new MyRepository<"table from EF">(MyEFConn);
MyEFConn是我的DbContext类..
public partial class MyEFConn: DbContext
答案 0 :(得分:2)
我收到错误'MyEFConn'是'type'但是像'变量'一样使用
这是因为MyRepository的构造函数希望传递一个DbContext的实例。在您的情况下,这将是MyEFConn的实例。
例如:
MyEfConn context = new MyEfConn();
MyRepository<MyUsers> users = new MyRepository<MyUsers>(context);