Linq2SQL, Объекты: Средний уровень или Уровень доступа к данным - PullRequest
0 голосов
/ 02 июня 2010

Люди,

В стандартной 3-уровневой архитектуре куда бы вы поместили dbml-файл Linq2SQL?

Ваш ответ одинаков для модели данных сущности ado.net?

Если файл dbml находится на среднем уровне, то есть ли у вас слой данных?

С уважением,

Brett

Ответы [ 2 ]

0 голосов
/ 02 июня 2010

DBML должен быть частью уровня данных, а не напрямую доступным для бизнес-уровня. Вместо этого лучше всего раскрывать методы для получения и сохранения сущностей и сохранять взаимодействие со спецификой постоянства, сохраняемой под прикрытием (в данном случае это Linq2Sql, но, абстрагируя ее, вы можете позже перейти на Linq2Entities или что-то еще, не нарушая свой приложение).

это также хорошая модель, если необходимо выполнить несколько запросов и немного манипулировать данными для создания ваших сущностей или выполнить дополнительную работу при сохранении (работа с внешними ключами для дочерних таблиц и т. Д.) В том смысле, что она сохраняет эти детали скрыты от других уровней.

относительно комментариев Стивена о том, что L2Sql плохо сериализуется, к сожалению, это правда, если вы используете то, что дает вам конструктор Linq2Sql из коробки. хотя несколько обходных путей в частичных классах достаточно легко это исправляют.

0 голосов
/ 02 июня 2010

DBML действительно будет на среднем уровне. LINQ to SQL запрашивает уровень данных (ваша база данных SQL Server). LINQ to SQL обычно находится на нижнем уровне среднего уровня, и вы не отправляете LINQ to SQL сущностям по проводам (они плохо сериализуются).

С Entity Framework ваша архитектура выглядит очень похоже, за исключением того, что EF позволяет передавать объекты домена по проводам. Особенно с выходом новых технологий (таких как OData), которые хорошо интегрируются с EF.

...