2009-03-12 4 views
1

У меня есть хранилище базовый класс, который вызывается из моих контроллеров в моей MVC приложенияLinq 2 SQL - лучший способ сделать это

Каждый контроллер получает его собственный репозиторий

как это

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

ответ

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(); 
    } 
} 
Смежные вопросы