データベースアクセスのためにLINQ to SQLを使用するC#.NETアプリケーションを作成しています。残念ながら、過去4時間をホームネットワークで動作させるためにアプリケーションを使用しようとしました。私は開発のために前もって問題のないアプリケーションを持ってきて、変更を仕事に戻しました。しかし、今晩はデータベースアクセスに関する問題が引き続き発生し、DAOの接続文字列が自分の仕事ComputerName/Instanceを参照していることがわかりました。自分の仕事のPC名(つまりBEN-Laptop)のソリューション全体を検索し、Windowsの高度な検索オプションを使用してディレクトリ全体を検索しました。しかし、私は私の仕事のPCへの参照を見つけることができませんでした。アプリケーションを家に持ってきて、私の仕事用PCから私の家のPCにすべての接続文字列の値を変更しました。なぜDAOの接続文字列が私の仕事用PCとSQLインスタンスを参照しているのか分かりません。私は迷っているので、この情報はどこかにキャッシュされていますか?LINQ to SQL DataContextがConnectionStringを更新しない
答えて
デザインビューでdbmlファイルを開いてプロパティ(F4)を表示すると、ConnectionStringプロパティが見つかるはずです。使用可能な接続文字列のリストを展開すると、各文字列のソースがわかります。設定ファイルから来る可能性が最も高いです。 (〜\ Properties \ Settings.settings)
データコンテキストを作成するときは、接続文字列を取るコンストラクタを使用するのが理想的です。
using(var dc = new TestDataContext(connectionString))
{
// Do stuff
}
DataContextのデータベース接続文字列の問題は、実際にはソリューションを再構成した私の同僚の結果でした。つまり、Windowsアプリケーションは1つのプロジェクトにあり、データベースロジックは別のプロジェクトでDLLとしてコンパイルされます。 Windowsアプリケーションは、明らかに接続文字列のために自分の仕事の設定を持っていた古いバージョンのDLLを参照していました。プロジェクトの参照を正しいDLLに変更するだけで、すべて正常に動作しました。これは、なぜ私は設定がDLLファイルにコンパイルされていると推測しているので、ソリューション内で私の仕事用PCへの参照が見つからない理由を説明します。私のデータベースDLLプロジェクトをデバッグしようとすると、この発見につながりました。ベースのDAOクラスとリポジトリクラスにいくつかのブレークポイントを設定し、IDEがブレークポイントをバイパスしていることを確認したら、参照を確認するように促しました。
今、上記のように接続文字列をコンストラクタに渡しています。 – Grasshopper
将来参照するには、プロジェクトの.dll出力を参照するのではなく、プロジェクト参照を使用するようにしてください。 –
最初:ちょうどこの
string pp = @"Data Source=(LocalDB)\v11.0;AttachDbFilename=C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\DATA\AdventureWorks2012_Data.mdf;Integrated Security=True;Connect Timeout=30";
秒のようになります。新しい接続文字列を言及:
DataClasses1DataContext dc = new DataClasses1DataContext(pp);
第三: は、テーブルclasss
のインスタンスで変更を行います第4:
あなたが質問を理解していないことが明らかな別の答え –
DataContext()
コンストラクタには、実際のデータベースのパスを示す文字列がありません。
はいそれは仲間になった –
- 1. datacontextとlinq-to-sqlデータモデルに変更
- 2. LINQ to SQL DataContext接続エラーの報告
- 3. LINQ to SQL WCF DataContractへのDatacontextマッピング
- 4. Linq to SQLの部分的な更新?
- 5. LINQのツーSQL CreateDatabaseがto-SQLのDataContextのストアドプロシージャ
- 6. LINQ to SQL、override dispose
- 7. Linq to SQLデータを更新する
- 8. c#linq to sql - データベーステーブルを更新する
- 9. Linq to SQL - 異なるDataContextインスタンス上で変更を維持できる
- 10. LINQ to SQLは::データ更新の問題
- 11. Linq-To-SQLで更新するには?
- 12. LINQ-to-SQLクラスのカスケード削除/更新
- 13. linq-to-SQLの条件付き更新
- 14. データベース内のMVC Linq to SQL更新オブジェクト
- 15. SqlCEデータベースの更新Linq-to-SQL
- 16. LINQ to SQLはDataContextの後にクエリを使用します。
- 17. WinFormsのLinq to SQLを使用した更新可能なデータグリッド
- 18. LINQ to SQL:すぐに更新されないDataContext.SubmitChanges
- 19. このLINQ to SQL更新クエリが機能しない理由は何か。 。
- 20. C#Linq to sql-classes - 更新されたストアドプロシージャが動作しない
- 21. LINQでデータベースを更新するには? Linq-to-SQL
- 22. LINQ to SQLでデータベースが更新されないという問題
- 23. Linq to SQLエラーSQLはXMLを比較しませんか?
- 24. LINQ to SQLとLINQ to DataSet
- 25. Linq-to-SQLを使用してレコードを更新する
- 26. LINQ to SQLを使用して更新/セットを実行する
- 27. linq-to-sql InsertOnSubmit
- 28. 異なるデータコンテキストからのLINQ to SQL(DBML)更新エンティティ
- 29. Ado.netの挿入後にC#Linq-to-SQLが更新されない
- 30. Linq-to-SQLは更新レコードのカスタムストアドプロシージャを実行します
具体的には、私が変更した接続プロパティは、主にapp.configおよびdbmlファイルにありました。仕事用PC(Ben-LaptopからMajor-HomePC)への参照を変更するために可能なすべての検索メカニズムを使用しているときに、自分のアプリケーションが自分の仕事用PC上のデータベースを見つけようとしている理由を理解できないだけです。私が考えることができるのは、この情報がプロジェクトの外のどこかにキャッシュされているということですが、私は.NET開発にかなり新しく、自分の努力を尽くしたように感じます。ご提案をお願いします。私はそれを感謝します。 – Grasshopper
プロジェクトをクリーンにして、Rebuildを実行してください。第2に、接続文字列は 'app.config'からのみ読み込まれます。あなたは' dbml'ファイルでどこでそれを見つけましたか教えてください。 app.configの変更は、アプリケーションの再起動時にのみ反映されます。アプリケーションのwinform、コンソール、またはウィンドウサービスのタイプは何ですか? –