Я использую Entity Framework, Linq, WCF и MVC3. Система разделена на многоуровневый подход, и я использую WCF, потому что несколько систем будут использовать один и тот же доступ к данным и бизнес-логику.
Доступ к данным - Бизнес-логика - API (WCF) - Классы обслуживания - MVC
Для каждого просмотра в моем приложении MVC необходимо писать запросы LINQ, которые обращаются к различным таблицам в базе данных и показывают сводные данные, как показано ниже.
var users =
(from u in _userRepository.All
from upd in u.UserPropertyData.DefaultIfEmpty()
from upd1 in u.UserPropertyData.DefaultIfEmpty()
where (upd.UserPropertyType.Alias == "Forename") && (upd1.UserPropertyType.Alias == "Surname")
select new UserModel
{
Id = u.Id,
Forename = upd.Value,
Surname = upd1.Value,
EmailAddress = u.Email
});
Этот запрос находится в моем разделе бизнес-логики и передает UserModel через мой WCF API в мой класс Service, который передает модель моему контроллеру, который затем отображается в представлении.
Этот подход не кажется правильным, поскольку доступ к данным и бизнес-логика соединяются с MVC путем передачи «модели просмотра». Если кто-нибудь может придумать лучший подход, я был бы признателен.