我目前正在使用 ASP.NET Web Api 以及 NHibernate 和 Autofac ...我遇到了一个问题,即我的更新没有提交到数据库。每次执行如下操作时,我都使用 ActionFilterAttribute 打开和关闭事务:
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();
}
这适用于我的存储库中的添加、读取和删除功能。不幸的是,我的更新似乎不起作用(尽管我已经尝试了几种方法):
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;
}
根据我所读到的,如果在事务期间修改对象,则无需手动调用 Update 或 SaveOrUpdate,因为 NHibernate 会跟踪并在事务提交时执行。
为什么我的更新功能不能正常工作?
谢谢!