我试图在工作单元中使用存储库模式。我使用C#和Entity Framework,我的目的是使用这个代码将不同的数据源连接到一个控制器,但我无法实现它。
这是我的情景:
我有两种不同的数据源:
带有实体框架的SqlServer读写数据
检索数据的Web服务。
我会使用一个工作单元来互换访问这两个数据源。
这是我的存储库:
class GenericRepository<T> : IRepository<T> where T : class
{
private DBEntities entities = null;
IObjectSet<T> _objectSet;
public GenericRepository(DBEntities _entities)
{
entities = _entities;
_objectSet = entities.CreateObjectSet<T>();
}
public IEnumerable<T> GetAll(string uri, string ragneUri)
{
IEnumerable<T> t = new List<T>();
return t.AsEnumerable();
}
public IEnumerable<T> GetAll(Func<T, bool> predicate = null)
{
if (predicate != null)
{
return _objectSet.Where(predicate);
}
return _objectSet.AsEnumerable();
}
public T Get(Func<T, bool> predicate)
{
return _objectSet.First(predicate);
}
public void Add(T entity)
{
_objectSet.AddObject(entity);
}
public void Attach(T entity)
{
_objectSet.Attach(entity);
}
public void Delete(T entity)
{
_objectSet.DeleteObject(entity);
}
}
它是我的工作单位
public class GenericUnitOfWork : IDisposable
{
private DBEntities entities = null;
private DataActions da = null;
public GenericUnitOfWork(DBEntities PE)
{
entities = PE;
}
public Dictionary<Type, object> repositories = new Dictionary<Type, object>();
public IRepositoryIPSE<T> Repository<T>() where T : class
{
if (repositories.Keys.Contains(typeof(T)) == true)
{
return repositories[typeof(T)] as IRepository<T>;
}
IRepository<T> repo = new GenericRepository<T>(entities);
repositories.Add(typeof(T), repo);
return repo;
}
public void SaveChanges()
{
entities.SaveChanges();
}
private bool disposed = false;
protected virtual void Dispose(bool disposing)
{
if (!this.disposed)
{
if (disposing)
{
entities.Dispose();
}
}
this.disposed = true;
}
public void Dispose()
{
Dispose(true);
GC.SuppressFinalize(this);
}
}
现在我成功连接数据库,但我没有连接到Web服务。
要访问Web服务,我想用单一方法GetData()创建第二个存储库,但我不知道如何与工作单元集成并交替使用不同的存储库。有一种不同的方法可以解决这个问题吗?
感谢&#39; S