work unit repositorio patron generico framework con and unit-testing mocking repository-pattern entity-framework-4.1 unit-of-work

unit-testing - unit - repositorio generico entity framework 6



¿El patrón UnitOfWork y GenericRepository es redundante en EF 4.1 primero? (3)

Me pregunto si necesito usar el patrón Genericrepository y UnitOfWork para simular el repositorio. Estoy usando MOQ. Ahora es redundante, ya que he notado que EF 4.1 tiene IDBSet.

No he descubierto cómo escribir algo genérico con el IDBSet. Si tienes un ejemplo donde implementas IDBSet, ¿me lo puedes mostrar?

¿Alguna sugerencia?



Este es un duplicado de muchos temas ya discutidos en SO, pero estoy de acuerdo en que algunos de ellos pueden ser difíciles de encontrar porque están anidados en otra pregunta

Espero que esto te dé algunas respuestas. De lo contrario, no dude en solicitar más información aquí o en una nueva pregunta.


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; } } }