- SQL Server 2008 R2 と共に Entity Framework 5 を使用しています。
- また、リポジトリ パターンも実装しました。
- デスクトップアプリです
私のシステムは、1 つの「小さな」詳細を除いて、うまく機能しています。2 人以上のユーザーがアプリを使用していて、1 人がデータを変更した場合、別のユーザーがアプリを離れて再入力しないと、データが表示されません。ここでLadislavの答えを得ました:別のDbContextで行われた変更をロードする
そしてそれはうまくいきました。唯一の問題は、各コレクションが更新されていることを確認したいので、ハードコーディングする必要があることです。
それは機能しますが、これにはもっと良い方法があるに違いないと思わずにはいられません。データベースがいつ変更され、データを再取得する必要があるかを Entity Framework が認識していないとは思いません。
それで、私は何を間違っていますか?
これは私がこれまで行っていることです:
public class MyAppContext : DbContext
{
//DbSet<T> declarations
}
public class Context : IDisposable
{
private readonly MyAppContext ctx;
private Dictionary<Type, IRepository> repositories;
private static Context instance;
public static Context Instance
{
get
{
if (instance == null)
instance = new Context();
return instance;
}
}
...
}
// and then each repository have access to the context
public abstract class Repository<T> : IRepository
where T : class
{
protected readonly MyAppContext ctx;
...
}
ご覧のとおり、「シングルトン」パターンを使用してコンテキストにアクセスし、デュアル コンテキストの例外を回避しています。
何か案は?