Одна и та же строка подключения для разных моделей EntityFramework? - PullRequest
3 голосов
/ 15 марта 2012

Я начинаю с приложения MVC3, используя EF. У нас есть база данных с> 200 таблицами. Я использую метод DBFirst.

Моя идея состояла в том, чтобы создать EFModel для различных областей приложения вместо того, чтобы объединить всю схему БД в одну большую модель. Теперь я столкнулся с проблемой, когда каждая модель хочет иметь собственную строку подключения. Мне не удалось изменить только одну общую строку. Разве это не возможно? Я думаю, что это тот же дБ в фоновом режиме, так что ...

Или я здесь совсем? Должен ли я перетащить все таблицы в одну большую модель? Или принять тот факт, что я получу много строк подключения?

Есть идеи?

Ответы [ 3 ]

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

У вас не может быть одной строки подключения EF для нескольких моделей EDMX, поскольку метаданные EDMX являются частью строки подключения EF .

Это не должно быть проблемой для вас, за исключением того, что все эти строки подключения содержат встроенную строку подключения к БД, и вы можете изменить это в одном месте вместо 5. Вы можете , однако, обновите часть строки подключения к БД во время выполнения, используя EntityConnectionStringBuilder .Таким образом, вы можете иметь «обычную» (не EF) строку подключения для подключения к БД, а затем использовать EntityConnectionStringBuilder, чтобы подставить ее в строки подключения EF при создании контекста.

Вверху моей головы,код будет выглядеть примерно так:

var dbCS = ConfigurationManager.ConnectionStrings["DBConnectionString"].ConnectionString;
var model1CS = ConfigurationManager.ConnectionStrings["Model1ConnectionString"].ConnectionString;
var ecsb = new EntityConnectionStringBuilder(model1CS);
ecsb.ProviderConnectionString = dbCS;

return new Model1Entities(ecsb.ToString());
0 голосов
/ 15 марта 2012

Зачем вам нужно использовать Entity Framework?Может быть, EF не является правильным решением для вас.

Я рекомендую вам использовать другие ORM, такие как Simple.Data .

0 голосов
/ 15 марта 2012

Возможно, вам следует создать базовый контекст, в котором вы можете жестко закодировать строку подключения или ее имя в web.config. Контекстные родители могут иметь только часть al db и даже описывать некоторые общие сущности в родительском контексте, вы должны использовать их в каждом дочернем элементе.

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