Я собираюсь запустить небольшой/средний проект. Я отнюдь не архитектор программного обеспечения. Но я склонен подвергать сомнению каждый шаг, который я делаю иногда. Так как я хочу делать все правильно.Простой репозиторий asp.net mvc с инфраструктурой сущностей
Я нашел способ реализовать простой репозиторий, и я хотел знать, является ли это «правильным» способом его выполнения. Я пришел к этому решению, так как знаю, что происходит, и не занимаюсь чем-то сложным до того, как у меня есть знания :)
Вот оно.
Единица работы
Где я убедиться, что я, чтобы сохранить все мои хранилища под то же DbContext. В моем распоряжении я могу получить доступ ко всем репо при вызове его из контроллера.
public class UnitOfWork : IDisposable
{
private ContactRepository _contactRepo;
private ApplicationDbContext _entities;
public UnitOfWork(ApplicationDbContext entities)
{
_entities = entities;
}
public ContactRepository ContactRepo
{
get
{
if (_contactRepo == null)
{
_contactRepo = new ContactRepository(_entities);
}
return _contactRepo;
}
}
public void Save()
{
_entities.SaveChanges();
}
private bool disposed = false;
protected virtual void Dispose(bool disposing)
{
if (!this.disposed)
{
if (disposing)
{
_entities.Dispose();
}
}
this.disposed = true;
}
public void Dispose()
{
Dispose(true);
GC.SuppressFinalize(this);
}
}
ContactRepository
Это короткий пример хранилища, где он recieves в DbContext и использует его, чтобы захватить все данные, я хочу
public class ContactRepository
{
private ApplicationDbContext _entities;
public ContactRepository(ApplicationDbContext entities)
{
_entities = entities;
}
public IEnumerable<Contact> GetAll()
{
return _entities.Contacts;
}
}
Контроллер
Sho к.т. пример контроллера
public class ContactController : Controller
{
UnitOfWork uow = new UnitOfWork(new ApplicationDbContext());
public ActionResult Index()
{
var contacts = uow.ContactRepo.GetAll();
return View(contacts);
}
protected override void Dispose(bool disposing)
{
uow.Dispose();
base.Dispose(disposing);
}
}
В этом случае я буду иметь доступ ко всем моим хранилищам в том же DbContext, который я был стремился.
Я знаю, что все может быть сделано умнее/различно. С помощью, например, расширяемого общего репо. Но в этом случае я стремлюсь к чему-то простому и понятному. Но все же не хотите совершать огромную ошибку, если есть серьезный недостаток.
Вы видите какие-либо серьезные недостатки в этом способе обработки данных через инфраструктуру сущности?
Архитектура кажется отлично Мне, ни мне, ни архитектору. Я бы предложил вам поместить код в http://codereview.stackexchange.com/ – Eldho