Как я могу использовать те же объекты EF для SQL Server Compact и SQL Server? - PullRequest
1 голос
/ 18 марта 2012

У меня есть проект по созданию программы, которая может работать в двух режимах:

  1. внутренние пользователи получают доступ к централизованной базе данных (SQL Server) и могут просматривать / редактировать элементы друг друга, или

  2. внешние клиенты создают все свои собственные данные локально (SQL Server Compact) и упаковывают их в XML по электронной почте, чтобы запросить расценки.

Вопрос в том, каков наилучший способ сделать это, чтобы минимизировать техническое обслуживание и максимизировать функциональность EF? Я также хотел бы использовать хранимые процедуры в SQL Server для операций записи, но это не главный приоритет, если слишком много проблем.

Я мог бы вручную создать отдельный SSDL перед развертыванием, но это дополнительная работа и подвержена ошибкам. Я мог бы пойти Model First, но я думаю, что это усложнит обновления баз для обоих провайдеров. Я мог бы пойти в направлении Code First, используя шаблоны DbContext Generator T4, но затем я потерял много преимуществ EF, таких как отслеживание изменений и отображение хранимых процедур. А с CF мне придется значительно улучшить шаблоны T4, или мне все равно придется создавать отдельный SSDL.

Есть статья или какие-нибудь инструменты, чтобы сделать это проще?

Редактировать: Я решил, что лучший способ сделать это - использовать Code First для создания моей модели и использовать новый код для первых миграций. С помощью миграций я могу сгенерировать скрипт изменения для полного экземпляра сервера и просто применить полные изменения к локальной базе данных CE. Другое преимущество заключается в том, что у меня есть полный контроль над строкой подключения, и я могу указать ее любому провайдеру.

Это небольшая дополнительная работа, чтобы вручную создать классы POCO, создать классы конфигурации (я предпочитаю определять с помощью Fluent API) и добавить дополнительные функции (например, уникальные индексы) в первый класс миграции, но в конце наименьшая работа в целом.

Мне придется выяснить, как избежать использования хранимых процедур позднее, но к тому времени EF 5 может быть доступен и решить мою проблему.

1 Ответ

1 голос
/ 18 марта 2012

Я также хотел бы использовать хранимые процедуры в SQL Server для записи операций, но это не главный приоритет, если слишком много проблем.

SQL Compact не поддерживает хранимые процедуры, поэтому, если вы серьезно к этому относитесь, вы не сможете повторно использовать сопоставление.

Я мог бы пойти в направлении Code First, используя шаблоны DbContext Generator T4, но затем я потерял много преимуществ EF, таких как отслеживание изменений и отображение хранимых процедур.

Вы потеряете только что сохраненную процедуру отображения. Отслеживание изменений будет работать таким же образом. Вы также сможете использовать один и тот же код сопоставления для обоих серверов баз данных, но вам придется бороться с некоторыми незначительными различиями между SQL-сервером и SQL Server compact.

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

Это необходимо сделать, если вы хотите использовать EDMX и большой SQL Server и SQL Server Compact с одной и той же кодовой базой. Более того, вам придется ограничить возможности вашей большой реализации SQL Server только функциями, поддерживаемыми SQL Server Compact.

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