这必须是一个简单的问题。给定一个标准,如何删除满足标准的实体?如何使用条件删除NHibernate对象?
的基本原理:
HQL和NH标准是NHibernate的特定构建体和因此它们是服务器侧DAL实现细节。我不希望他们“泄漏”到客户端。所以,我们的客户端提供了LINQ表达式来处理服务器。直到现在,select请求和LINQ to NHibernate处理它们的请求都很好。
但是,现在需要实施批量删除操作。像往常一样,客户端提供一个LINQ表达式,服务器将删除满足该表达式的实体。 不幸的是,LINQ to NHibernate在这里没有任何帮助。它可以做的最多的是将给定的LINQ表达式转换为NHibernate标准。
无论如何,这是故事。我想强调客户端根本不知道NHibernate,我喜欢它保持这种方式。
P.S.
我使用NH 2.1
虽然在处理大量对象时我不喜欢这种方法,因为它需要先从数据库中获取所有实体,然后才能删除它们。 – 2009-08-25 09:02:57
这是真的,你不需要使用HQL来发出'DELETE FROM WHERE'SQL语句吗? – DanB 2009-08-25 09:05:50
伙计们,你不认真。一定会有更好的办法! – mark 2009-08-25 09:06:26