短期集中コースの後Entity Framework
、雇用主の周りで遊んでいる人がef 5のコードを最初に使用することにしました。
dbcontext の派生物を、リポジトリと接続文字列と共に、アセンブリ内で単独で分離しました。アイデアは、プロジェクト間で再利用できるアセンブリを作成することです。
データベース アセンブリの接続文字列は次のようになります。
<add name="LmsDb" connectionString="Data Source=(LocalDb)\v11.0;Initial Catalog=LmsDb;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\LmsDb.mdf;;MultipleActiveResultSets=true" providerName="System.Data.SqlClient" />
データベース プロジェクト (クライアント) を使用するアセンブリの接続文字列は次のようになります。
<add name="LmsDb" connectionString="Data Source=(LocalDb)\v11.0;Initial Catalog=LmsDb;Integrated Security=SSPI;MultipleActiveResultSets=true" providerName="System.Data.SqlClient" />
これで問題なく動作する MVC プロジェクトを作成しました。すべての統合テストは、この接続文字列でうまく動作します。
問題が発生したのは、設定可能な間隔でデータベースを通過し、そこにあるデータに従って何らかのアクションを実行するために、ある種のスケジューラ ロジックを作成しなければならなかったときです。いくつかのクエリに対して ef 5 コードを実行するタイマーを備えた単純な Windows サービスを作成して、これをテストすることにしました。
タイマーは毎分 Select all クエリを実行するように設定されていますが、これが発生すると、データベースにデータがあることはわかっていますが、クエリは結果を返しません。
を見ると、DbContext.Connection.State
Closed に設定されています。
私は何を間違っていますか?
((ObjectContextAdapter)my context).ObjectContext.Connection.Open()
Julie Lerman によると、明示的に接続を開こうとしました。
しかし、これは何の役にも立たなかったようです。