Как создать класс начальной загрузки для Entity Framework 4.3 и SQL Server Compact 4.0 - PullRequest
3 голосов
/ 14 марта 2012

( TL; DR версия выделена жирным шрифтом внизу)

Когда был впервые выпущен Entity Framework 4.1 Code First (фактически это было около CTP5 времени), существовал NuGet пакет под названием EFCodeFirst. Это можно использовать в сочетании с другим пакетом NuGet под названием EFCodeFirst.SqlServerCompact, который разрешает использование EF с SQL Server Compact 4.0 (SQL Server CE).

Установка пакета EFCodeFirst.SqlServerCompact создаст скаффолд или создаст класс "bootstrapper" с именем SQLCEEntityFramework.cs в папке App_Start, который настроит такие вещи, как EF Database.DefaultConnectionFactory, наряду с генерацией "заглушек" для других полезных методов (инициализация , посев БД и т. д.) с помощью пакета WebActivator

Эти два пакета (EFCodeFirst & EFCodeFirst.SqlServerCompact) теперь устарели и, по-видимому, были заменены эквивалентными пакетами EntityFramework & EntityFramework.SqlServerCompact и обоими в настоящее время версия 4.3.1

Моя проблема заключается в том, что, используя эти новые пакеты в новом проекте, они не создают класс «начальной загрузки» для настройки EF на использование SQL Server Compact во время выполнения. Конечно, я могу просто скопировать старую версию класса из предыдущего проекта, но было бы неплохо знать, что пакет NuGet все еще содержит эту функциональность (которая может со временем обновиться).

Есть ли способ получить последнюю версию (4.3.1 на момент написания этой статьи) пакета EFCodeFirst.SqlServerCompact для создания класса начальной загрузки SQLCEEntityFramework.cs, либо после установки, либо после факта (возможно, с помощью команды powershell?)?

UPDATE:
Я только что заметил, что предыдущая версия EFCodeFirst.SqlServerCompact NuGetPackage все еще имеет зависимость от пакета WebActivator (который используется классом начальной загрузки), однако эта зависимость была удалена из обоих последняя версия и , непосредственно предшествующая последней версии . Похоже, что функциональность, которая генерирует класс начальной загрузки, была удалена, но почему мне интересно?

1 Ответ

3 голосов
/ 14 марта 2012

В EF 4.1 единственный способ заставить Code First создать базу данных SQL Server Compact по соглашению (т. Е. Без явного указания строки соединения) - это установить DefaultConnectionFactory в коде. Это проблематично, потому что инструментальные средства (такие как Миграции), которые должны знать, какая база данных используется, не знают, что этот код присутствует.)

В EF 4.3 мы добавили возможность сделать это в файле web.config. Пакет EntityFramework.SqlServerCompact использует это, устанавливая SQL Conmpact в качестве фабрики соединений по умолчанию в веб-конфигурации. Поэтому для этого не нужно использовать WebActivator или код.

Вы все еще можете использовать метод кода, если хотите, но помните, что такие вещи, как Миграции, могут работать неправильно, и мы рекомендуем вам использовать вместо этого файл конфигурации.

...