我有一个存储库基类,可以从我的mvc应用程序中的控制器调用
每个控制器都有自己的存储库
像这样public class ServiceRepository : Bluegrass.Mvc.RepositoryBase<Models.Service>
{
public ServiceRepository()
{
this._db = new iSppms.Models.iSppmsDataContext();
}
}
并像
一样使用internal DataAccess.ServiceRepository repository =
new iSppms.DataAccess.ServiceRepository();
public ActionResult Index()
{
var viewData = new ViewData.ServiceIndexViewData(
repository.GetItems<Models.Service>());
return View(viewData);
}
我想要做的就是不必通过模型,因为RepositoryBase已经是Models.Service类型
我正在寻找一种更好的方法来构建它。
public class RepositoryBase<T> where T : class
{
public DataContext _db;
public List<T> GetItems<T>() where T : class, Interfaces.IModel
{
var table = _db.GetTable<T>();
var data = table.Where(t => !t.Deleted);
return data.ToList();
}
答案 0 :(得分:1)
您可以将IModel
位添加到RepositoryBase<T>
,并使GetItems<T>
非通用吗?注意:重新使用通用令牌T
(GetItems
中不同)已经是一个坏主意:
public class RepositoryBase<T> where T : class, Interfaces.IModel
{
public DataContext _db;
public List<T> GetItems()
{
var table = _db.GetTable<T>();
var data = table.Where(t => !t.Deleted);
return data.ToList();
}
}
答案 1 :(得分:0)
也许这篇Repository Base Class文章有帮助吗?