Как использовать динамическую строку подключения для SQL Server CE?

Я использовал SQL Server CE 4.0 в своем приложении для Windows и использовал Entity Framework для создания его модели.

Он отлично работает, но моя проблема в том, что у него нет конструктора для изменения строки подключения, и по умолчанию он считывает строку подключения из файла app.config.

 using (var Context = new MyEntitiesModel(//has no constructor))
 {
        ...
 }

Я создаю динамическую строку подключения и

  using (var Context = new MyEntitiesModel())
   {
         Context.Database.Connection.ConnectionString = entityConnection.ConnectionString;
   }

Таким образом, он отлично работает, но если я удалю другую строку подключения в файле app.config, это даст мне это.

ошибка = недопустимый метаисточник....

потому что конструктор по умолчанию использует его

Как я могу справиться с этим?


person motevalizadeh    schedule 30.09.2012    source источник
comment
Разве нет конструктора, который принимает DbConnection в качестве параметра?   -  person Thomas Levesque    schedule 30.09.2012
comment
да нет конструкторов для изменения строки подключения   -  person motevalizadeh    schedule 30.09.2012
comment
вы не можете просто оставить фиктивную строку подключения в файле app.config?   -  person Seph    schedule 30.09.2012


Ответы (2)


Создайте свой собственный конструктор. MyEntitiesModel - это частичный класс, вы можете добавить свою собственную частичную часть класса и добавить конструктор, принимающий строку подключения.

public partial class MyEntitiesModel {
    public MyEntitiesModel(string connectionString) : base(connectionString) { }
}
person Ladislav Mrnka    schedule 30.09.2012
comment
error: Код, сгенерированный с использованием шаблонов T4 для разработки Database First и Model First, может работать неправильно, если используется в режиме Code First. Чтобы продолжить использование Database First или Model First, убедитесь, что строка подключения Entity Framework указана в файле конфигурации исполняемого приложения. Чтобы использовать эти классы, созданные с помощью Database First или Model First, с Code First добавьте любую дополнительную конфигурацию с помощью атрибутов или API DbModelBuilder, а затем удалите код, вызывающий это исключение. - person motevalizadeh; 30.09.2012
comment
Как выглядит ваша строка подключения? - person Ladislav Mrnka; 30.09.2012
comment
источник данных=|DataDirectory|\\MyDb.sdf;пароль=xxx;сохранять информацию о безопасности=True; - person motevalizadeh; 30.09.2012
comment
Вы используете EDMX? Это недопустимая строка подключения при использовании сопоставления EDMX. Вы должны использовать строку подключения в том же формате, что и в app.config. - person Ladislav Mrnka; 30.09.2012

Я использую DbContext. Существует несколько конструкторов перегрузки, например: ObjectContext также имеет аналогичный набор перегрузок конструктора.

Пример System.Data.Entity DbContext

Context = new BosMasterEntities(nameOrConnectionString: nameOrConnectionString);

Вы можете подключиться к нескольким БД одновременно.

person phil soady    schedule 12.10.2012