MVC3(Razor)を使用しているVS2010で構築したWebサイトがあります
DBContextsを使用してデータベースにアクセスします。接続文字列は次のとおりです。
<add name="SystemDBContext"
connectionString="Data Source=|DataDirectory|System.sdf"
providerName="System.Data.SqlServerCe.4.0" />
ゲームループが必要なので、Application_Startで新しいスレッドを開始しました。このスレッドは、DBContextを使用してデータベースをループしてアクセスします。
ループがDBContextを使用してdbファイルをロックし、Webサイト自体のDBContextから変更を加えようとすると、ファイルが使用されているように見えます。
DBContextを宣言するときではなく、DBContextを使用して何らかの検索または更新を実行しようとするたびに発生します。
これが私のGlobal.asaxです
protected void Application_Start()
{
...
Manager m = new Manager();
Thread t = new Thread(m.Start);
t.Start();
}
私のコントローラーの一部:
public class myController : Controller
{
private SystemDBContext db = new SystemDBContext();
public ViewResult Index()
{
var engines = db.Engines.Include(e => e.state);
return View(engines.ToList());
}
...
そして、私のループは次のようになります。
public class Manager
{
public void Start()
{
while (true)
{
SystemDBContext db = new SystemDBContext();
var query = from ...
}
...
これを行うためのベストプラクティスは何ですか?シングルトン、ロック、または同期ロックについて考えていました。データベースファイルに複数の接続を許可するように接続文字列を調整したり、ループで更新を行うWebページを要求したりしています。
何か案は?