카테고리 없음
[최대 절전 모드] NHibernate-Delete () 호출이 삭제에 실패하지만 HQL을 통한 삭제가 작동하는 이유는 무엇입니까?
행복을전해요
2021. 1. 8. 18:17
session.Flush()
삭제 한 후 세션을 닫기 전에 호출 해보십시오 . 세션을 명시 적으로 닫을 필요는 없습니다.
using (var session = ...)
{
entity.Delete();
session.Flush();
}
-------------------이것에 대해 더 자세히 조사한 후 이것이 작동한다는 것을 알았지 만 왜? :
public static void Delete(Object Entity)
{
using (ISession session = _sessionFactory.OpenSession())
{
MyDAO p = session.Get<MyDAO>(Entity.ID);
session.Delete(p);
session.Flush();
}
}
내 시나리오는 다음과 같습니다. 이전에 Grid에 채운 개체 목록을 쿼리했습니다. 해당 쿼리 프로세스를 위해 세션을 열거 나 닫았습니다. 삭제 함수를 호출하면 해당 개체를 가져 와서 별도의 세션 열기 / 닫기 프로세스를 위해이 함수에 전달합니다. 약간의 일을 일으키기 위해이 새 삭제에 대한 호출을 추가하여 먼저 개체를 가져 오도록 요청한 다음 (삭제하려는 개체) delete를 호출했습니다. 이제 데이터베이스에 삭제 쿼리를 보내고 개체는 실제로 삭제됩니다. 왜 이런거야?
객체에 대한 원래 쿼리가 다른 세션에서 열리고 다른 세션에서 삭제 되었기 때문입니까? 작업 단위와 관련이 있습니까? 내 그리드에 대한 세션을 열어야합니까? 모든 삭제가 해당 세션 내에서 작동하도록 양식이 닫힐 때까지 열어 두어야합니까? 세션을 빨리 열고 닫아야한다는 인상을 받았습니다. 혼란 스럽습니다.
출처
https://stackoverflow.com/questions/2005948