Кстати, для получения доступа к данным


Есть несколько статей о True доступа к данным в MVC. Я попытался сделать лучший по гибкости архитектуры. Мой способ заключается в следующем:

  1. АДО .Чистая сущность модели данных (*.edmx из рамок лицо) с генерацией кода по умолчанию.
  2. Общий интерфейс репозитория

     public interface IGenericRepository<T> where T : class
     {
         T Get(int id);
         void Create(T entityToCreate);
         void Edit(T entityToEdit);
         void Delete(T entityToDelete);
     }
    
  3. Интерфейс (в частности, методов текущего класса), класс с реального внедрения методов. Например

    public interface ITestingRepository: IGenericRepository<Testing>
    {
        List<dynamic> GetTestingUser(int id);
        List<dynamic> GetNotTestingUser(int idTesting, Guid idCompany);
        List<Testing> List(Guid CompanyId);
    }
    
    public class TestingRepository : ITestingRepository
    {
       private TestEverybody _entities = new TestEverybody();
    
       public List<Testing> List(Guid CompanyId)
       {
           return _entities.Testing.Where(t => t.idCompany == CompanyId).ToList();
       }
       public void Edit(Testing productToEdit)
       {
           var originalProduct = Get(productToEdit.id);
           _entities.ApplyCurrentValues(originalProduct.EntityKey.EntitySetName, productToEdit);
           _entities.SaveChanges();
       }
       public void Create(Testing productToCreate)
       {
           _entities.Testing.AddObject(productToCreate);
           _entities.SaveChanges();
       }
       //other methods
    }
    
  4. Следующий метод доступа к данным в контроллер

     public class TestingController : Controller
     {
       //
       // GET: /Testing/
       private ITestingRepository _repository;
       public TestingController() : this(new TestingRepository()) { }
    
       public TestingController(ITestingRepository repository)
       {
          _repository = repository;
       }
       [HttpPost]
       public ActionResult Create(Testing newobject)
       {
           _repository.Create(newobject);            
           return RedirectToAction("Index");
       }
       [HttpPost]
       public ActionResult Edit(Testing item)
       {
          _repository.Edit(item);
          return RedirectToAction("Index");
       }
     }
    

Он хороший? У меня какие-то там ошибки?



555
6
задан 14 октября 2011 в 06:10 Источник Поделиться
Комментарии