Предположим, что ваш код доступа к данным содержится в его собственном проекте / сборке . На это ссылается уровень пользовательского интерфейса (приложение ASP.NET MVC). Это поможет достичь цели поддержания тонкости ваших контроллеров и исключения всего кода доступа к данным из вашего проекта пользовательского интерфейса MVC.
Это обычно приводит к другому вопросу / обсуждению сущностей домена: при сопоставлении с хранилищем данных. Некоторым архитекторам нравится иметь объекты в отдельной сборке. Это стимулирует повторное использование в других приложениях. Некоторым нравится хранить объектную модель и код доступа к данным в одном проекте / сборке. Это полностью зависит от вас и вашего окружения.
Для примера, скажем, это приложение для выставления счетов; хранение клиентов, счетов и т. д.
Ваша реализация будет отличаться, в зависимости от вашей стратегии доступа к данным (ORM, такой как LINQ To SQL, EF, nHibernate, SubSonic или обычный старый ADO.NET, или чтение из плоского файла).
// Assembly: InvoicingDL
public class CustomerRepo
{
public IQueryable<Customer> ListCustomers()
{
return MyDatabase.Customers(); //however you'd get all your customers
}
//etc
}
// Assembly: InvoicingDL
public class InvoicingRepo
{
public IQueryable<Invoice> GetCustomerInvoices(int custID)
{
return MyDatabase.Invoices.Where(i=>i.CustomerID==custID);
}
//etc
}