Fluent nhibernate Fluent NHibernate:get、update和delete上的自定义条件(WHERE子句)

Fluent nhibernate Fluent NHibernate:get、update和delete上的自定义条件(WHERE子句),fluent-nhibernate,nhibernate-mapping,Fluent Nhibernate,Nhibernate Mapping,我有一个包含许多客户信息的表 ID | employeename | customerId ------------------------------ 1 | employee1 | 188 2 | employee2 | 188 3 | employee3 | 177 现在我只想得到那些customerId为188的员工。如何将其映射到Fluent NHibernate,以便在更新和删除时也会出现customerId=188的位置 当前映射类似于: Id(x

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

ID | employeename | customerId
------------------------------
 1 | employee1    |  188
 2 | employee2    |  188
 3 | employee3    |  177
现在我只想得到那些customerId为188的员工。如何将其映射到Fluent NHibernate,以便在更新和删除时也会出现customerId=188的位置

当前映射类似于:

Id(x => x.Id);
Map(x => x.Name).Column("employeename");
Map(x => x.CustomerId).Column("customerId");
添加WherecustomerId=188只会导致SELECT中的自定义where子句。我需要在saveorupdate上执行以下UPDATE子句

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

你脑子里的SQL思维是错误的

1添加HasMany x=>x.Employees.Inverse.AsSet;在您的客户类中。 2添加参考x=>x.客户;在你的员工课上

这称为双向映射

看这里:

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


PS:别忘了添加级联…

实际上customerId更像是访问控制。我根本不打算使用Customer类,在我的情况下,它实际上不是一个域模型。另一方面,如果我创建Customer类,我根本不希望它有Employees属性。然后在Employees类中删除2。还有很多人应该做剩下的事。