Можно ли использовать одну и ту же модель Entity Framework для SQL Express и SQL CE 4.0? - PullRequest
2 голосов
/ 09 апреля 2011

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

Несмотря на то, что модель и структура таблиц идентичны как для SQL Express, так и для SQL CE, я не могу понять, как заставить Entity Framework использовать тот же EDMX для работы собе базы данных.Концептуальная модель идентична для обоих, и единственное различие в модели хранения заключается в имени поставщика, который используется для доступа к базе данных.

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

Я использую .NET 4.0, Entity Framework и VS 2010 SP1

Ответы [ 2 ]

1 голос
/ 10 апреля 2011

К сожалению, я думаю, что вам нужно создать два отдельных SSDL с различным поставщиком и синхронизировать их вручную (это может быть сделано с помощью некоторого сценария после сборки, который скопирует файл ssdl и заменит поставщика).Тем не менее, вы должны быть уверены, что структуры таблиц одинаковы:

  • одинаковые имена таблиц
  • одинаковые имена столбцов
  • одинаковые типы данных

Последний пункт может быть критическим, потому что, как я знаю, SQL CE не поддерживает некоторые типы, распространенные в SQL Server.Например, я думаю, что navarchar(max) и nvarbinary(max) не поддерживаются в SQL CE.

Чтобы заставить EF создавать файл SSDL вместо включения его в качестве изменения ресурса Обработка метаданных Artifcat (в свойствах дизайнера EDMX) дляСкопируйте в выходной каталог и измените строку подключения. Здесь является соответствующей статьей.

0 голосов
/ 02 апреля 2013

Вы можете сделать это, если не возражаете перейти на Code First. Gallery Server Pro 3.0 использует Code First для нацеливания на SQL CE или SQL Server, в зависимости от предпочтений пользователя. Существует одна кодовая база, единственной разницей является строка подключения в web.config.

Это проект с открытым исходным кодом, поэтому вы можете увидеть, как это делается в коде.

...