Я пытаюсь реализовать UOW и Repository паттерн, но я получаю сообщение об ошибкеEntity Framework Единство работы и Repository шаблон
Объект объект не может ссылаться несколько экземпляров IEntityChangeTracker.
Я знаю, что получаю эту ошибку, потому что у меня есть два репозитория, которые создают два разных DBC-контекста, но я не знаю, почему это происходит.
Вот мой код UOW
public class UnitOfWorkRepositoryRepository : IUnitOfWorkRepository
{
private readonly IDatabaseFactory _databaseFactory;
private DatabaseContext _databaseContext;
public UnitOfWorkRepositoryRepository(IDatabaseFactory databaseFactory)
{
_databaseFactory = databaseFactory;
}
public DatabaseContext Database
{
get { return _databaseContext ?? (_databaseContext = _databaseFactory.GetDatabaseContext()); }
}
public void Save()
{
_databaseContext.Save();
}
}
А вот пример Repository:
private static readonly DatabaseFactory DatabaseFactory = new DatabaseFactory();
private static readonly UnitOfWorkRepositoryRepository UnitOfWorkRepositoryRepository = new UnitOfWorkRepositoryRepository(DatabaseFactory);
public User GetUserById(int id)
{
return UnitOfWorkRepositoryRepository.Database.Users.SingleOrDefault(u => u.UserId.Equals(id));
}
Что случилось? как следует использовать UoW
P.S.
Я не получаю ошибок в этом репозитории, но другой слишком длинный, этот служит как образец.
Почему вы создаете несколько экземпляров класса контекста? У вас есть конкретная причина для этого? – Moeri