내 메시지 처리기 내에서 Rebus 트랜잭션 컨텍스트를 사용하려고합니다. 나는 here 문서를 읽었으며 here 샘플을 보았습니다. 그러나 Windsor의 작동 방식을 모르겠습니다.메시지 처리기 내에서 rebus TransactionContext 사용
누군가 IOC 컨테이너없이 EF와 함께 ITransactionContext를 사용하는 예를 만들어서 작동 방식을 이해할 수 있습니까?
감사
내 메시지 처리기 내에서 Rebus 트랜잭션 컨텍스트를 사용하려고합니다. 나는 here 문서를 읽었으며 here 샘플을 보았습니다. 그러나 Windsor의 작동 방식을 모르겠습니다.메시지 처리기 내에서 rebus TransactionContext 사용
누군가 IOC 컨테이너없이 EF와 함께 ITransactionContext를 사용하는 예를 만들어서 작동 방식을 이해할 수 있습니까?
감사
나는 그것이 작업의 사용자 지정 단위를 구현하기위한 약간 더 높은 수준의 API를 제공하기 때문에 당신이 Rebus.UnitOfWork 패키지를 살펴 추천 할 수 - 함께 또는 IoC 컨테이너없이 하나를.
Rebus.UnitOfWork 사용하면이 작업을 수행 할 수 있습니다 MyCustomUnitOfWork
다음이 될 수
Configure.With(...)
.(...)
.Options(o => {
o.EnableUnitOfWork(Create, Commit, RollBack, Cleanup);
})
.Start();
//....
static MyCustomUnitOfWork Create() => new MyCustomUnitOfWork();
static void Commit(MyCustomUnitOfWork uow) => uow.Commit();
static void RollBack(MyCustomUnitOfWork uow) => uow.RollBack();
static void Cleanup(MyCustomUnitOfWork uow) => uow.Dispose();
당신이 원하는대로, 예를 들어, EF 데이터베이스 컨텍스트를 생성하고 SaveChanges
등을 호출하는 클래스입니다.
the wiki page about Unit Of Work에 대한 자세한 내용을 보거나 코드를 실행하여 the sample that demonstrates Rebus.UnitOfWork으로 바로 이동할 수 있습니다.
매우 분명히 부탁드립니다. 지금 당장 가지고있는 유일한 문제는 내 EF 데이터베이스 컨텍스트가 이미 다르게 등록되어 있다는 것입니다 (예 : 제안 된 샘플처럼 factory 메소드가 아닌 경우). 특히 메시지 핸들러에 대해 다른 등록을 사용하는 방법을 모릅니다. 어떠한 제안? – Lorenzo
제 제안은 항상 프로세스에있는 "논리적 응용 프로그램"마다 별도의 IoC 컨테이너를 사용하는 것입니다. 예 : 웹 응용 프로그램과 Rebus 기반 백엔드를 호스팅하는 경우 두 개의 별도 "논리적 응용 프로그램"을 가지므로 두 개의 IoC 컨테이너가 있어야합니다. 이렇게하면 각 특정 사용 시나리오 (예 : 웹 앱의 웹 요청에 바인딩 된, Rebus 백엔드의 팩토리 메소드 사용)를 목표로하는 라이프 스타일을 사용할 수 있습니다. – mookid8000
불행히도 내 경우에는 이렇게 쉽게 할 수 없습니다 ... – Lorenzo