Является ли UnitOfWork и GenericRepository шаблоном избыточным в первом коде EF 4.1?
Интересно, нужно ли мне использовать шаблон Genericrepository и UnitOfWork, чтобы имитировать репозиторий. Я использую MOQ.Is, теперь он избыточен, так как я заметил, что EF 4.1 имеет IDBSet.
Я не понял, как написать что-то общее, что usic IDBSet. Если у вас есть пример, где вы реализуете IDBSet, вы можете показать его мне?
Любые предложения?
Ответы
Ответ 1
Это дубликат многих тем, которые уже обсуждались в SO, но я согласен, что некоторые из них могут быть трудно найти, потому что они вложены в другой вопрос
Надеюсь, это даст вам несколько ответов. Если нет, не стесняйтесь запрашивать дополнительную информацию здесь или в новом вопросе.
Ответ 2
public class MockDbSet<T> : IDbSet<T> where T : class, new()
{
private List<T> _entities;
public MockDbSet(List<T> entities)
{
_entities = entities;
}
public virtual T Add(T entity)
{
_entities.Add(entity);
return entity;
}
public virtual T Attach(T entity)
{
_entities.Add(entity);
return entity;
}
public TDerivedEntity Create<TDerivedEntity>() where TDerivedEntity : class, T
{
return new T() as TDerivedEntity;
}
public virtual T Create()
{
return new T();
}
public virtual T Find(params object[] keyValues)
{
throw new NotImplementedException();
}
public System.Collections.ObjectModel.ObservableCollection<T> Local
{
get
{
return new ObservableCollection<T>(_entities);
}
}
public virtual T Remove(T entity)
{
_entities.Remove(entity);
return entity;
}
public IEnumerator<T> GetEnumerator()
{
return _entities.GetEnumerator();
}
System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator()
{
return _entities.GetEnumerator();
}
public Type ElementType
{
get { return _entities.AsQueryable().ElementType; }
}
public System.Linq.Expressions.Expression Expression
{
get { return _entities.AsQueryable().Expression; }
}
public IQueryProvider Provider
{
get { return _entities.AsQueryable().Provider; }
}
}
Ответ 3
Кроме того, я хочу добавить, что общий репозиторий и блок работы над Entity Framework избыточен, посмотрите эту ссылку http://rob.conery.io/2014/03/04/repositories-and-unitofwork-are-not-a-good-idea/