2013-05-29 3 views
2

Я пытаюсь реализовать 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.

Я не получаю ошибок в этом репозитории, но другой слишком длинный, этот служит как образец.

+0

Почему вы создаете несколько экземпляров класса контекста? У вас есть конкретная причина для этого? – Moeri

ответ

1

Посмотрите на это SO answer, где я описываю способ удаления Uow из репозитория.

Смежные вопросы