我正在尝试实现UoW和Repository模式,但是我收到了错误
IEntityChangeTracker的多个实例无法引用实体对象。
我知道我收到了这个错误,因为我有两个创建两个不同DBContext的存储库,但我不知道为什么会这样。
这是我的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();
}
}
这里有示例存储库:
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。
我在这个存储库中没有收到任何错误,但是其他错误太长了,这个错误就像样本一样。