EF5 を使用するコンテキストで問題が発生しています。私はまだ問題を研究していますが、同じオブジェクトを別のエンティティ リポジトリで使用するために、DataContext クラスをシングルトン パターンで実装することをお勧めします。自殺ですか、それとも意味がありますか?もう 1 つのアイデアは、次のような ContextManager を実装することです。まだ深くは理解していません)。
どう思いますか?
- 編集 -
Web アプリケーションでは、管理する必要があるエンティティごとにリポジトリを実装しています
public DataContext : DbContext
{
//...
}
解決策 1 : 問題ありませんが、1 回の呼び出しで複数のアクション (挿入と削除) を実行する必要がある場合は、db を 2 回呼び出すことになると思います。
public Entity1Repository
{
public void Add(Entity1 entity)
{
using(DataContext context = new DataContext())
{
context.Entity1.Add(entity);
context.SaveChanges();
}
}
public void Delete(Entity1 entity)
{
using(DataContext context = new DataContext())
{
context.Entity1.Remove(entity);
context.SaveChanges();
}
}
}
解決策 2 : この場合、db への呼び出しは 1 回だけだと思いますが、Dispose() を呼び出すことを覚えておく必要があります。
public Entity1Repository
{
private DataContext context;
public void Add(Entity1 entity)
{
context.Entity1.Add(entity);
}
public void Save()
{
context.SaveChanges();
}
public void Dispose()
{
context.Dispose();
}
}
最適な実装はどれですか? (私が正しく理解していれば、シングルトンは良いものではありません)