1

UnitOfWorkApplication을 기반으로 ASP.Net MVC 응용 프로그램을 작성 중이며 Castle ATM 기능을 사용하고 싶습니다. 지금은 요청이 끝나면 세션을 비우는 데 문제가 있습니다. (내 컨트롤러 액션 메소드에서 호출) 내 서비스 클래스는 다음과 같습니다Rhino UnitOfWorkApplication + Castle 자동 트랜잭션 관리 응용 프로그램이 요청시 자동으로 플러시되지 않습니다.

[Transactional] 
public class UserAdminService : IUserAdminService 
{ 

    [Transaction(TransactionMode.Requires)] 
    public User CreateNewUser(string username, string password, string firstName, string lastName) 
    { 
     var u = new User(username) 
        { 
         PasswordHash = GetPasswordHash(password), 
         FirstName = firstName, 
         LastName = lastName 
        }; 
     userRepo.Save(u); 
     //UnitOfWork.CurrentSession.Flush(); 
     return u; 
    } 

나는 주석을 해제 할 때 "UnitOfWork.CurrentSession.Flush를();" 모든 것이 제대로 작동합니다 - 새로운 사용자는 DB에 유지됩니다. 그러나 세션을 명시 적으로 플러시하지 않으면 아무 것도 지속되지 않습니다.

UnitOfWorkApplication + ATM은 요청시 변경 사항을 플러시해야합니다. AFAIK가 맞습니까? 누구든지 명시적인 session.Flush() 호출없이 작동하도록 노력해야 할 조언을 가지고 있습니까?

+0

ATM을 제대로 설정하면 생각하고 있습니다. DefaultTransactionManager는 괜찮습니까? AutomaticTransactionManagement.TransactionFacility 기능과 Castle.Services.Transaction.DefaultTransactionManager 기능을 앱의 IoC 컨테이너에있는 구성 요소로 등록합니다. – Buthrakaur

답변

1

원래 성 ATM 시설 + DefaultTransactionManager 대신 RhinoTransactionFacility를 등록했고 모든 것이 작동하기 시작했습니다.

관련 문제