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。还有很多人应该做剩下的事。