私が適切なグーグルをするのに愚かすぎたかどうかはわかりませんが、これに対する解決策は見つかりませんでした:
ado.net Frameworkを使用したasp.netアプリケーションがあるため、接続文字列があります。
私の接続文字列は、次のようにWeb.configに保存されます。
<connectionStrings>
<add name="Entities" connectionString="metadata=res://*/DataModel.csdl|res://*/DataModel.ssdl|res://*/DataModel.msl;provider=MySql.Data.MySqlClient;provider connection string="server=x.x.x.x;User Id=user;password=1234;database=db;port=8888;Persist Security Info=True"" providerName="System.Data.EntityClient"/>
</connectionStrings>
私は何人かの人々に解決策を与えなければなりません、そして彼らがこの接続文字列を掘り下げてそこですべての設定を変更しなければならないならそれはちょっと面倒だと思います(それはそこに「明確に配置されていない」だけです)、それはいいでしょう文字列の外で、おそらく次のように宣言できます(同じファイル内、または可能であれば「dbsettings」と呼ばれる別のファイル内で、このファイルをweb.configに含めます):
<appSettings>
<add key="dbserver" value="x.x.x.x" />
<add key="dbserverport" value="8888" />
<add key="dbuser" value="user" />
<add key="dbpassword" value="1234" />
</appSettings>
私が話していることをあなたが理解してくれることを願っています。
解決
まず第一に、ChiYoungの答えを見てください-彼はほとんどすべてを言いましたが、とにかくここで私がそれをどのようにしたかを詳しく説明します:
私はこれWeb.config
を追加しました(configuration
セクション内):
<appSettings>
<add key="dbserver" value="x.x.x.x" />
<add key="dbserverport" value="8888" />
<add key="dbname" value="dbxy" />
<add key="dbuser" value="user" />
<add key="dbpassword" value="1234" />
</appSettings>
次にDatabaseHelper.cs
、Data
-Layer(プロジェクト)に次のようなクラスを作成しました。
class DatabaseHelper
{
public static string MakeConnectionString()
{
string appDbserver = ConfigurationManager.AppSettings["dbserver"];
string appDbserverport = ConfigurationManager.AppSettings["dbserverport"];
string appDbuser = ConfigurationManager.AppSettings["dbuser"];
string appDbpassword = ConfigurationManager.AppSettings["dbpassword"];
string appDbname = ConfigurationManager.AppSettings["dbname"];
return @"metadata=res://*/DataModel.csdl|res://*/DataModel.ssdl|res://*/DataModel.msl;provider=MySql.Data.MySqlClient;provider connection string=""server=" + appDbserver + @";User Id=" +
appDbuser + @";password=" + appDbpassword + @";database="+appDbname+@";port=" + appDbserverport + @";Persist Security Info=True""";
}
}
次に、DataModel.Designer.cs
ファイルを変更しました(このクラスObjectContext
は、Ado.netを使用しているため、継承され、自動生成されました)。生成されたコンストラクターを次の場所から変更しました。
public Entities() : base("name=Entities", "Entities")
{
this.ContextOptions.LazyLoadingEnabled = true;
OnContextCreated();
}
に:
public Entities() : base(DatabaseHelper.MakeConnectionString(), "Entities")
{
this.ContextOptions.LazyLoadingEnabled = true;
OnContextCreated();
}
Webプロジェクトに関連しないプロジェクトがある場合(私の場合はテストプロジェクトでした)、関連する構成ファイルにアプリ設定を追加する必要があります(App.config / Web.config
)。
終わり。