2

Итак, я создал таблицу, в которой я нуждаюсь, и мне нужно изменить мою строку соединения при запуске моей программы. На данный момент моя связьПользовательская строка подключения EF5, DB сначала

"metadata=res://*/entityframework.Model1.csdl|res://*/entityframework.Model1.ssdl 
|res://*/entityframework.Model1.msl;provider=MySql.Data.MySqlClient; 
provider connection string="server=localhost;User Id=myuserid; 
password=12345678;database=databasename"" 

То, что я до сих пор

Get.designer.cs файл:

using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Linq; 
using System.Text; 
using System.Windows.Forms; 
using System.Data.EntityClient; 
using Npgsql; 
using System.Configuration; 
using System.Data.Entity; 
using System.Data.Entity.Validation; 
using patientlist.entityframework; 
using System.Xml; 

namespace patientlist 
{ 
    public partial class Get : Form 
    { 
     Timer update = new Timer();//60000 = 1min 
     public Get() 
     { 
      InitializeComponent(); 
     } .... 

    private void Timer(object sender, EventArgs e) 
    { 
     string connectionString = "metadata=res://*/entityframework.Model1.csdl|res://*/entityframework.Model1.ssdl|res://*/entityframework.Model1.msl;provider=MySql.Data.MySqlClient;provider connection string="server=localhost;User Id=myuserid;password=12345678;database=databasename""; 

     using (var blah = new ltcsystemEntities()) 
     { 
      blah.Database.Connection.ConnectionString = connectionString; 
     } ..... 

Я использую EF5, и это DB первым (я создал некоторые автоматический код из моей модели сущности)

+0

'databasename & quot' & quot; – sed

+0

вот что было сгенерировано с использованием EF –

+0

Мне просто нужно сделать так, чтобы несколько пользователей могли войти в одну и ту же базу данных (через мою форму) –

ответ

7

С DB Первый производный DbContext был бы автоматически сгенерированного для вас в качестве частичного класса.

public partial class MyContext : DbContext 
{ 
    public MyContext() 
    : base("name=MyContext") 
    { 
    } 

//... 
} 

Обратите внимание, как она включает в себя конструктор без параметров, который вызывает родительский конструктор метода подписи: public DbContext(string nameOrConnectionString); передавая имя строки соединения. Это строка соединения, которая должна быть в вашем app.config.

Если вам нужно изменить строки подключения, вы можете написать неполный класс, чтобы дополнить автогенерированный класс и предоставить конструктор, который принимает имя другой строки подключения app.config или самой строки соединения, а затем передаёт это родительскому конструктору ,

public partial class MyContext 
{ 
    public MyContext(String nameOrConnectionString) 
    : base(nameOrConnectionString) 
    { 
    } 
} 

Тогда вы можете использовать следующее.

using(MyContext context = new MyContext(nameOrConnectionString)) 
{ 
    //Do stuff 
} 

Однако, если вы переключаетесь строки соединения на основе некоторого значения времени выполнения (ов), то вы можете найти его полезным создать класс фабрики для обработки экземпляра вашего DbContext.

+0

+1, вы также найдете проблемы при переходе на миграцию, если конструктор по умолчанию (без параметров) - тот, который нужно перенести. Это возможно, но требуется больше кода –

0

ссылается на файл Web.config в корневом каталоге проекта.

Ваши строки соединения расположены внутри тега «ConnectionStrings»

+0

У меня только есть app.config, и мне нужно иметь возможность изменить его, когда моя программа запускает. –

Смежные вопросы