如何在NHibernate中有效地删除ID对象?

mar*_*ark 3 nhibernate

我们在服务器端使用NHibernate作为我们的ORM.

有时,只需要给定该对象的类型和ID,就需要从数据库中删除一个对象.此外,之前未获取已删除的对象(因此它不在会话缓存中或其他任何内容中).

无论如何,我正在使用ISession.Delete(query)重载,其中查询是微不足道的from Dummy where Id=5.

我的问题是为什么NHibernate在删除它之前获取对象?据我所知,我正在支付服务器的双往返费用,直观地应该只进行一次往返.

有没有办法通过NHibernate的类型和ID从数据库中删除对象,这样只需要一次往返?

dot*_*joe 6

您也可以使用HQL自行删除它.

session.CreateQuery("delete from Table where id = :id")
     .SetParameter("id", id)
     .ExecuteUpdate();
Run Code Online (Sandbox Code Playgroud)

但这不会级联删除,我认为这是它需要首先加载的一个原因.