현재 NHibernate & Autofac과 함께 ASP.NET 웹 API를 사용하고 있습니다 ... 내 업데이트가 데이터베이스에 커밋되지 않는 문제가 있습니다.내 NHibernate 업데이트가 작동하지 않는 이유는 무엇입니까?
추가를 위해 잘 작동private ISessionFactory SessionFactory { get; set; }
public TransactionAttribute()
{
SessionFactory = WebApiApplication.SessionFactory;
}
public override void OnActionExecuting(System.Web.Http.Controllers.HttpActionContext actionContext)
{
var session = SessionFactory.OpenSession();
CurrentSessionContext.Bind(session);
session.BeginTransaction();
}
public override void OnActionExecuted(HttpActionExecutedContext actionExecutedContext)
{
var session = SessionFactory.GetCurrentSession();
var transcation = session.Transaction;
if (transcation != null && transcation.IsActive)
{
transcation.Commit();
}
session = CurrentSessionContext.Unbind(SessionFactory);
session.Close();
}
, 읽고, 내 저장소에서 삭제 기능 : 나는 열고 transcation에게 액션이과 같이 수행 할 때마다 닫는 ActionFilterAttribute을 사용하고 있습니다. 불행하게도, 내 업데이트 (나는 그것을 몇 가지 방법을 시도했습니다 불구하고) 작동하지 않는 것 : 내가 읽은 바로는
public bool Update(Client client)
{
var result = Get(client.ClientID);
if (result == null)
{
return false;
}
result.Name = client.Name;
result.Acronym = client.Acronym;
result.Website = client.Website;
return true;
}
을 거래하는 동안 객체를 수정, 수동으로 업데이트를 호출 할 필요가 존재하지 않는 경우 또는 SaveOrUpdate가 트랜잭션이 커밋 될 때 수행되는 NHibernate &에 의해 추적되기 때문이다.
왜 내 업데이트 기능이 제대로 작동하지 않습니까?
감사합니다.
어디에서 업데이트가 호출 되었습니까? Get이란 무엇입니까? 더 많은 코드를 사용하면 해당 스 니펫은 쓸모가 없습니다. – Euphoric
Euphoric, 여기 내 전체 저장소 클래스 : http://pastebin.com/raw.php?i=bsQFL1fs – slashp
모든 세션/트랜잭션이 동작 과정에서 동일하면 디버거를 실제로 확인합니다. 어딘가에 다른 세션/트랜잭션이 생성 될 수 있습니다. 기본 세션/get/update/commit 코드를 제거하고 추가 코드를 추가하여 코드의 어떤 부분이이 오류를 일으키는 지 확인하십시오. – Euphoric