그래서 나는 매끄러운 줄 알았는데. 컨텍스트 주위를 매번 새롭게하지 않고 매핑 (Entity 프레임 워크)을 정의 할 수 있어야합니다.이 작업을 수행하려면 DbContext 클래스를 상속해야합니다. 나는 그것을 던지기 위해 내가 던져 넣는 어떤 문맥으로도 계속 연결하고 싶습니다. 나는 거기에 평소 용의자와 (법인) 소요 IRepository 인터페이스 및 IContextFactory에 대한 종속성과 그것의 구현 ...StructureMap 2.6.1, IRepository <T> 및 EFRepository <T,TContext>
public interface IContextFactory<T> where T : DbContext
{
T Context { get; }
}
그리고 내 "EFRepository"
public class EFRepository<T, TContext> : IRepository<T> where T : class
where TContext : DbContext
{
public EFRepository(IContextFactory<TContext> contextFactory)
{
}
}
에있어
내 매핑에서 나는이 작업 중 하나를했습니다 ...
x.For(typeof(IContextFactory<>)).Use(typeof(ContextFactory<>));
x.For(typeof(IRepository<>)).Use(typeof(EFRepository<,>));
Ok cool. 내 단위 테스트, 난 ...
var repository = ObjectFactory.GetInstance<EFRepository<Currency, EFContext>>();
var repository2 = ObjectFactory.GetInstance<IRepository<Currency>>();
먼저 하나가 작동 문제 이런 식으로하려고하지. 두 번째 하나, 나는 타격을받습니다
제공되는 일반 인수의 수가 일반 형식 정의의 수와 동일하지 않습니다. 매개 변수 이름 : 인스턴스화
2를 통과 한 이후로 IRepository에 전달할 일반화 된 구조 맵을 말하지 않기 때문에 그럴 것 같습니다. 어떻게해야합니까? ... 할 수 있을까요?
그래서 진짜 대답은 "이건 다른 방식으로하는 짓이야"... 나는 그걸로 끝이야! 지금 당장 질문을 열어 두겠습니다.하지만 이것이 올바른 대답 일 수 있습니다. 그리고 당신 말이 맞아요. :-( – jeriley