Какой слой должен содержать файлы сущностей LinqToSql - В моем случае - PullRequest
0 голосов
/ 16 июля 2010

Итак, я оглянулся и не нашел ничего похожего на то, о чем я говорю, я знаю, что некоторые похожи, но это более конкретный вопрос.

Я работаю над проектому себя дома и с использованием структуры сущностей в качестве моего провайдера ORM, когда мы работаем над проектом на моем рабочем месте, мы используем NHibernate и настраиваем различные библиотеки DLL для DM \ DAL \ BL и т. д., где фактические сопоставленные классы и файлы hbm установлены впапка DM и соединение с БД происходит только на уровне DAL, все проекты имеют доступ к DM и используют модели для перемещения, например UI -> - (WCF) -> BL-> DAL и обратно.

Мой собственный проект имеет аналогичную настройку, однако, когда я действительно использовал EF для отображения своей базы данных и видел, как она работает, кажется, что где бы я ни генерировал классы, соединение с БД также должно существовать.

Итак, мой вопрос: где мне размещать классы сущностей и соединение с БД?или есть способ разделить два и все еще легко генерировать классы с помощью перетаскивания?

Заранее спасибо!

Ответы [ 2 ]

3 голосов
/ 16 июля 2010

Это довольно распространенный вопрос. С ORM, такими как EF и LINQ to SQL, реальный «DAL» - это уровень ORM (это то, что делает фактический тяжелый доступ к данным). Да, информация о соединении, такая как строка соединения, существует на уровне модели, но такая информация должна поступать от bottom , так что это не должно быть проблемой каких-либо реальных последствий.

Итак, чтобы ответить на ваш вопрос, просто поместите сущности ORM в их собственную сборку и начинайте работать.

1 голос
/ 16 июля 2010

Зависит также от того, насколько «чистым» вы намереваетесь быть с сущностями - если у вас есть несколько «представлений» в памяти «данных» (например, DAL DTO, Business Entities, DataContract типа сущностей через провод WCF, и Данные ViewModel для пользовательского интерфейса и т. Д.), Тогда оставление объектов «DAL» в сборке DAL - это нормально.

Однако более быстрым и грязным решением было бы повторно использовать POCO на всех уровнях (согласно Адаму) - разделить их на отдельную сборку и затем ссылаться на POCO из любого слоя.

AFAIK с Linq2SQL, это невозможно, поскольку сущности тесно связаны с DataContext (это означает, что все слои, использующие сущности LINQ2SQL, должны будут ссылаться на 'Dal' - совсем не красиво)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...