2

リストされているエンティティクラスを考えてみましょう

public NerdDinnerEntities() : base("name=NerdDinnerEntities", "NerdDinnerEntities")
        {

            this.ContextOptions.LazyLoadingEnabled = true;

            OnContextCreated();
        }

        /// <summary>
        /// Initialize a new NerdDinnerEntities object.
        /// </summary>
        public NerdDinnerEntities(string connectionString) : base(connectionString, "NerdDinnerEntities")
        {
            this.ContextOptions.LazyLoadingEnabled = true;

            OnContextCreated();
        }



        /// <summary>
        /// Initialize a new NerdDinnerEntities object.
        /// </summary>
        public NerdDinnerEntities(EntityConnection connection) : base(connection, "NerdDinnerEntities")
        {
            this.ContextOptions.LazyLoadingEnabled = true;
            OnContextCreated();
        }  

これらは、Web構成ファイルのように読み取られます

<add name="NerdDinnerEntities" 
    connectionString="metadata=res://*/Models.NerdDinner.csdl|res://*/Models.NerdDinner.ssdl|res://*/Models.NerdDinner.msl;provider=System.Data.SqlClient;provider connection string=&quot;Data Source=*;
    Initial Catalog=db;User ID=*;Password=****;
    MultipleActiveResultSets=True&quot;" providerName="System.Data.EntityClient" />

私の問題は、Web構成ファイルを変更せずに、コードを使用してデータベース名をdbからdb1に変更する必要があることです..

changedatabase() と呼ばれるクラス名と同じようにエンティティ..しかし、私はそれを使用する方法がわかりません...

私の別の質問は、このプロジェクトに新しいdllを追加し、接続が開かれるたびに接続文字列メタデータを変更することが可能であり、そのdllに来てデータベース名のみを変更し、そのデータベースで戻ることです。 ..

あなたの貴重な命令と提案を待っています

4

1 に答える 1

1
public class MyEntities : NerdDinnerEntities
{
  public MyEntities() : base(GetConnectionString())
  {
  }

  private string GetConnectionString()
  {
    var connectionString = System.Configuration.ConfigurationManager.
        ConnectionStrings["connectionStringName"].ConnectionString;
    var builder = new System.Data.Common.DbConnectionStringBuilder();
    builder.ConnectionString = connectionString;
    var internalConnectionString = builder["provider connection string"].ToString();
    var newConnectionString = internalConnectionString.Replace("oldDBName", "newDBName");
    builder["provider connection string"] = newConnectionString;
    return builder.ConnectionString;
  }
}
于 2012-07-30T07:35:14.210 に答える