2016-05-29 15 views
0

私が参加した開発者のグループは、Entity Frameworkを使用していませんが、私はそれを使用しても問題ありません。現在、彼らの接続文字列がweb.config(またはapp.config)に格納されている環境ごとに複数の接続文字列を使用する単一のDbContext

<add name="LH_RPMDB" 
    connectionString="data source=localhostdb;Database=dbsim;user id=sim;password=sim;Application Name=SIM-LH;" 
    providerName="System.Data.SqlClient" /> 
<add name="DEV_RPMDB" 
    connectionString="data source=devdb;Database=dbsim;user id=sim;password=sim;Application Name=SIM-dev;" 
    providerName="System.Data.SqlClient" /> 
<add name="QA_RPMDB" 
    connectionString="data source=qadb;Database=dbsim;user id=sim;password=sim;Application Name=SIM-qa;" 
    providerName="System.Data.SqlClient" /> 

今、彼らはlocalhostのLHを使用するように私に言っている、その後、上側の環境では、彼らはDEVQAに沿って分類されます。

私がチームに新しいサーバーのURLを「検出」しているかどうかはわかりません。私はちょうど適切なデータベース接続文字列を消費するために私のDbContextを取得しようとしています。

現在、私はちょうど1つの接続文字列で1 DbContextを持っているので、

public class RPMContext : DbContext 

しかし、私は「彼ら」は、このようなコードを使用していることを参照してください。

ws.Url = ConfigurationSettings.AppSettings(ConfigurationSettings.AppSettings("Environment") + "_SNTRAX") 

しかし、私が活用したいと思っています単一のDbContextを持つすべての環境のいくつかの接続文字列。私はこの一例を示しているいくつかのコードweb.config

<connectionStrings> 
    <add name="DefaultConnection" 
     connectionString ... 

が、その後

public TrackerContext() : base("Name=DefaultConnection") {} 

私が見ていた別の例では、ここで

public partial class HOLDbEntities 
{ 
    public HOLDbEntities(string connectionString) 
     : base(connectionString) 

で見つけ

は、私が見ていたstackoverflowの記事で、それは本当に私がどこになりたいかに私を得ることはありません

Entity Framework - using the same DbContext with different connection strings

何が欲しいですか?まあ、app.config(このアプリケーションではweb.configをコンソールアプリケーションとして使用していない)のすべての環境接続文字列を持つ必要があることはわかっています。私にはわからない何

はややダミーの証明と私は考えているだけで「自動的に 『仕事』

であることを、私はアプリケーションの中だということを何環境を知る方法であること、それをURLを読んだが、実際にコンソールアプリケーションですので、サーバーの環境に応じて、 "LH"と "DEV"と "QA"を使用する接続文字列を変更しappettingを変更する必要があるかどうかをご確認ください。

考え?

+0

実際の問題は何ですか? 'ConfigurationSettings.AppSettings(" Environment ")は環境を教えてくれませんか?それはあなたがすでに正しい接続文字列を取得する方法を知っているようですね! – usr

+0

'ConfigurationSettings.AppSettings(" Environment ")'のコード行はこの他のプロジェクトのものです。私はDbContextファイルでそれを使う方法を知りたいと思います。 –

+0

新しいHOLDbEntities(ConfigurationSettings.AppSettings( "Environment")+ ...) 'できませんか?コンテキスト.csファイルを変更する必要はありません。 – usr

答えて

1

おそらくConfiguration Extensionを試してみてください。

+0

これは私が持っていたと思っています。私はweb.configの変換を使用してからチーターを遅くしました。目的を理解しています。私は一時的にこのグループが彼らの方法論を持っているので好きではないと確信しています。そして、彼らは私に接続文字列を使用する方法を使用するように頼んだコードレビューをしました(問題はdbcontext /私は彼らが適切な環境をどのように管理しているのかわかりません) –

+0

あなたは接続文字列を得ることができますが、それをあなたのDbContextコンストラクタに渡すだけですか? –

+0

'TrackerContext():Base(" Name = DefaultConnection "){}'を 'ConfigurationSettings.AppSettings(" Environment ")'に渡すメソッドを持つにはどうすればいいですか? –

関連する問題