流畅的NHibernate:获取,更新和删除自定义条件(WHERE子句)

时间:2010-08-02 10:24:31

标签: fluent-nhibernate nhibernate-mapping

我有一张包含许多客户信息的表

ID | employeename | customerId
------------------------------
 1 | employee1    |  188
 2 | employee2    |  188
 3 | employee3    |  177

现在我想只获得那些customerId为188的员工。如何使用Fluent NHibernate进行映射,那么在更新和删除时,还会有WHERE customerId = 188

当前映射类似于:

Id(x => x.Id);
Map(x => x.Name).Column("employeename");
Map(x => x.CustomerId).Column("customerId");

仅添加Where("customerId = 188")会导致SELECT中的custom where子句。我需要在saveorupdate上执行UPDATE子句。

UPDATE employees SET employeename="employ" WHERE ID = 2 AND customerId = 188;

1 个答案:

答案 0 :(得分:0)

你错误地想到了这个SQL思想。

1)添加HasMany(x => x.Employees).Inverse()。AsSet();在您的客户类中 2)添加引用(x => x.Customer);在您的员工类中。

这称为双向映射。

请看这里:http://www.progware.org/Blog/post/NHibernate-inverse3dtrue-and-cascade3dsave-update-demo.aspx

您的想法是创建对象并为其指定值。之后,如果您有适当的映射文件,NHibernate将执行SQL语句。不要写你的SQL查询,然后强制NHibernate生成完全相同的。而是编写映射并查看NHibernate生成的SQL并尝试对其进行优化。

PS:别忘了添加级联......