2012-06-26 7 views
12

変更されたテーブルをdbmlにドラッグするたびに、VS2010は正確なデータ接続を作成しても、同じ情報。これが起こるたびに、私の接続文字列が 'DataSourceConnectionString'に変更され、5つの異なるファイルからその接続文字列を削除し、以前使用していた接続文字列の名前に置き換える必要があります。ソースコントロール。何か案は?テーブルをdbmlファイルにドラッグすると、LINQ to SQL dbmlがテーブルをdbmlファイルにドラッグするときに停止する

答えて

17

私はいくつかの多少の関連する問題の答えをつけた後、別の場所を見つけました。

問題を解決するために、VS2010のサーバーエクスプローラウィンドウから自分のデータベースに接続するために作成したデータ接続を削除する必要がありました。その後、.dbmlデザイナを開き、空白を右クリックしてプロパティを選択する必要があります。プロパティウィンドウが開き、「接続」セクションが表示されます。小さな矢印をクリックすると開きます。接続文字列の行をクリックすると、その上に点(...)が付いたボタンが表示されます。このボタンをクリックすると、Connection Propertiesウィンドウが開きます。このウィンドウにはすでに.dbmlにすでにあるすべての接続プロパティがあります。 [OK]をクリックするだけで、サーバエクスプローラで自動的にデータ接続が作成され、新しいオブジェクトをドラッグすると.dbmlに新しい接続文字列が追加されることはありません。

Yay!私が更新するたびに余分な接続文字列を削除する必要はありません! :D

+0

これはとても奇妙ですが、ありがとうございます。私はMSがLINQ to SQLの作業をやめたことは嫌です。これは、Entity Frameworkですべてを再構築するために多くの作業を行う方法です。 – Olaj

+0

はい!できます。しかし、私はどのように思っていますか?それはどうやって! – Mohammadreza

+0

ありがとうございます。 @Stuck yesこれは奇妙だ – Mohammadreza

2

DataContextをインスタンス化するときは、接続文字列を指定できるoverloadを使用します。これは、デザイナーがそこに置いた値を上書きします。

DataClasses1DataContext db = new DataClasses1DataContext(); 

使用:たとえば、代わりにただの

DataClasses1DataContext db = new DataClasses1DataContext("..connection string.."); 

または

DataClasses1DataContext db = new DataClasses1DataContext(ConfigurationManager.ConnectionStrings["myConnectionString"].ConnectionString); 

が、これはあなたが探しているものであると思います。

+0

私はこれを行うとは思わなかった。インスタンス化するDataContextを必要とする静的なクラスがあるので、何百万回もタイプするのは面倒です。私は実際に昨日それを理解しましたが、何ヶ月も問題を抱えていたので、他の人のためにここに投稿したかったのです。返信ありがとうございました –

+0

それはVS 2012が最終的に接続文字列をコードに焼き付けないようにしているようです。 VS 2012では、パラメータなしでデータコンテキストをインスタンス化すると、web.configのAppSettingsから値を読み込むコンストラクタが呼び出されます。使用されるAppSettingsキーは、dbmlファイルの[Properties]タブで変更または設定できます。 –

関連する問題