IQueryable을 반환하는 쿼리 메서드가있는 일반 리포지토리가 있습니다. 내 전화 코드에서 다음과 같은 것을 할 수있다.Nhibernate 가져 오기에 대한 Fluent 래퍼 ThenFetch
_repository.Query<MyClass>(x=>x.EntityId == 1).Fetch(x=>x.MyClassChild).ToList()
그러나 나는 (내가 아는 한) 호출 코드를 테스트 할 수 없다. 그래서 나는 다음과 같은
public class Repository : IRepository
{
....
public FetchedResult<TQueried, TRelated> ThenFetch<TQueried, TFetch, TRelated>(INhFetchRequest<TQueried, TFetch> query, Expression<Func<TFetch, TRelated>> relatedObjectSelector)
{
INhFetchRequest<TQueried, TRelated> nhFetchRequest = query.ThenFetch(relatedObjectSelector);
return new FetchedResult<TQueried, TRelated>(this, nhFetchRequest);
}
public FetchedResult<TOriginating, TRelated> Fetch<TOriginating, TRelated>(IQueryable<TOriginating> query, Expression<Func<TOriginating, TRelated>> relatedObjectSelector)
{
INhFetchRequest<TOriginating, TRelated> nhFetchRequest = query.Fetch(relatedObjectSelector);
return new FetchedResult<TOriginating, TRelated>(this, nhFetchRequest);
}
}
할 노력하고있어 - 작품을 가져 오기 위해
public class FetchedResult<TQueried, TRelated>
{
private readonly IRepository _repository;
private readonly INhFetchRequest<TQueried, TRelated> _query;
public FetchedResult(IRepository repository, INhFetchRequest<TQueried, TRelated> query)
{
_repository = repository;
_query = query;
}
public FetchedResult<TQueried, TRelated> ThenFetch<TFetch>(Expression<Func<TFetch,TRelated>> relatedObjectSelector)
{
return _repository.ThenFetch(_query, relatedObjectSelector);
}
}
그래서 첫 번째 통화를하지만 repositor.ThenFetch에 대한 호출은 INhFetchRequest 쿼리를 취했지만 INhFetchRequest를 반환합니다. 그래서 FetchedResult를 사용하여 ThenFetch를 두 번째 호출 할 수는 없습니다.
이것이 문제라고 생각합니다. 이 시점에서 내 두뇌는 꽤 풀립니다. 누구든지 내가 알게 도와 줄 수 있다면 더 많은 정보를 제공 할 수 있습니다.
이제 통계를 사용하여이를 수행 할 수 있다는 것을 알았지 만 여기에서의 목표는 가져 오기 호출을 모의 할 수있게하는 것입니다.
감사합니다,
Raif