20

저장소를 조롱하기 위해 Genericrepository 패턴과 UnitOfWork를 사용해야하는지 궁금합니다. MOF를 사용하고 있습니다. 이제는 EF 4.1에 IDBet이 있음을 알았 기 때문에 중복되었습니다.UnitOfWork 및 GenericRepository 패턴 중복 EF 4.1 코드에서 처음으로?

유령 IDBet을 일반적인 방법으로 작성하는 방법을 찾지 못했습니다. IDBet을 구현 한 예제가 있다면 나에게 보여줄 수 있습니까?

제안 사항?

답변

29

이 이미 SO에 논의 된 다양한 주제의 중복하지만 난 그들이 다른 질문

답변 해 주시면 감사하겠습니다. 그렇지 않은 경우 여기 또는 새로운 질문에서 더 많은 정보를 요청하십시오. 내가 추가 할뿐만 아니라

+0

감사에게 많은이 링크를 확인, 중복 now.Do moq가 codeFirst와 조롱 프레임 워크로 사용되는 예제를 보았거나 보았습니까? db.i를 포함하여 다운로드 예제를 끝낼 수 있습니까? 나는 첫 번째 질문을 보았습니다. 그러나 어떤 점에서 당신의 대답에 필자는 필 요할 지 모르겠습니다. 시간 내 주셔서 감사합니다. – user9969

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