Я изучаю Nhibernate, и есть кое-что, в чем я не совсем уверен. Я надеюсь, что вы можете помочь мне проверить мой код. Как вы видите следующий код, который я не назвал " SAVE ", и он все еще обновляет значение в базе данных. Может возникнуть ситуация, когда я хочу изменить значение объектов и не хочу сохранять их обратно в базу данных. Как мне это сделать?
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult UpdateShoppingCart(FormCollection collection)
{
int customerID = int.Parse(collection["CustomerID"]);
foreach (var item in _shoppingCartItemReopository.GetByCustomerID(customerID))
{
item.DateUpdated = DateTime.Now;
// update item one by one
//_shoppingCartItemReopository.Save(item);
}
return RedirectToAction("GetUserShoppingCart", new { id = customerID });
}
В моем файле Gloabal.asax.cs:
protected void Application_BeginRequest(object sender, EventArgs e)
{
ManagedWebSessionContext.Bind(HttpContext.Current, SessionManager.SessionFactory.OpenSession());
}
protected void Application_EndRequest(object sender, EventArgs e)
{
ISession session = ManagedWebSessionContext.Unbind(HttpContext.Current, SessionManager.SessionFactory);
if (session != null)
{
try
{
if (session.Transaction != null && session.Transaction.IsActive)
{
session.Transaction.Rollback();
}
else
{
session.Flush();
}
}
finally
{
session.Close();
}
}
}
Я надеюсь, что вы могли бы проверить мой код и дать несколько советов по открытию и закрытию сессии в Application_BeginRequest и Application_EndRequest. Будет ли делать это дорого?
Большое спасибо.
Daoming