Место для размещения Database.SetInitializer

Я работаю над проектом, который может закончиться несколькими версиями / вариантами пользовательского интерфейса, но пока у меня есть два подпроекта в моем веб-решении, содержащем веб-интерфейс с ASP.NET MVC. Сервисный проект - это место, где у меня определены контекст и модели моей базы данных.

Моя цель состоит в том, чтобы в моем веб-проекте было как минимум или вообще не было ссылок на код, специфичный для EF. Я хочу, чтобы он был независимым, поэтому, когда я переключаю библиотеки DLL с серверной частью службы (скажем, с SQL на XML или MySQL), я не должен вносить несколько изменений в свой проект MVC.

Вот как это выглядит:

Project layout

Мои вопросы: - пока я не нашел примеров использования Database.SetInitializer в другом месте, кроме Global.asax. Я хотел бы повторно создать базу данных, если модель изменилась в моем фабричном классе DatabaseContextProvider или в классе обслуживания, который извлекает данные из контекста и предоставляет их пользовательскому интерфейсу с помощью DTO. Есть ли у этого места минусы? - Я хотел бы, чтобы контекст connectionString можно было настраивать с помощью файла Properties / Settings.settings - это разумно?

32
задан torm 30 December 2011 в 12:43
поделиться