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() 호출없이 작동하도록 노력해야 할 조언을 가지고 있습니까?
ATM을 제대로 설정하면 생각하고 있습니다. DefaultTransactionManager는 괜찮습니까? AutomaticTransactionManagement.TransactionFacility 기능과 Castle.Services.Transaction.DefaultTransactionManager 기능을 앱의 IoC 컨테이너에있는 구성 요소로 등록합니다. – Buthrakaur