ASP.NET MVC - модельное решение: как его спроектировать? - PullRequest
0 голосов
/ 01 августа 2009

Это касается корпоративного приложения с очень общей базой данных (все объекты идентифицируются с использованием данных в базе данных и интернационализируются / глобализируются / локализуются).

  • Сделать модель для шаблона репозитория, затем создать (сгенерировать 1: 1) другую модель для доступа к БД (LINQ2SQL или EF) и использовать последнюю в качестве уровня доступа к данным модели репозитория?
  • Просто использовать модель L2S / EF / NHibernate напрямую, сопоставить модель с БД и открыть слой постоянства?

Будут ли возникать проблемы с этой идеей двойной модели (шаблоном репозитория), делающие возможным динамические стекируемые поисковые запросы LINQ при использовании модели L2S / EF непосредственно в среде двойной модели?

Пожалуйста, сообщите.

Ответы [ 2 ]

0 голосов
/ 01 августа 2009

Взгляните на четкую архитектуру .

Что касается возврата IQueryable из ваших объектов репозитория, то я считаю, что такое размытие обеспечивает правильное разделение задач в вашем приложении. Я полностью за работу с IQueryable на вашем уровне доступа к данным, но как только вы начнете возвращать объекты как IQueryable, вы дадите возможность вашим контроллерам и / или представлениям начать вмешиваться в доступ к данным. Это может даже негативно повлиять на тестируемость вашего приложения.

0 голосов
/ 01 августа 2009

Пока вы выставляете объекты IQueryable в своем репозитории, у вас не должно быть проблем с составлением запросов в предложенном вами порядке.

Я бы с осторожностью использовал для этого Entity Framework, поскольку отложенная загрузка не поддерживается так, как вы ожидаете. Linq to SQL справится с отложенной загрузкой без проблем.

Для получения дополнительной информации о отложенной загрузке в Entity Framework см .:
http://www.singingeels.com/Articles/Entity_Framework_and_Lazy_Loading.aspx

...