2

必要なテーブルを生成したので、プログラムの開始時に接続文字列を変更できるようにする必要があります。現時点で私の接続は

"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が最初です(エンティティモデルから自動化されたコードを生成しました)

4

2 に答える 2

7

DB First を使用すると、派生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

于 2013-07-03T21:34:21.930 に答える
0

プロジェクトのルート ディレクトリにある Web.config を参照してください。

接続文字列は「connectionStrings」タグ内にあります

于 2013-07-03T21:15:02.670 に答える