我在使用旧版 Oracle DB 开发的应用程序中使用 Fluent NHibernate(我对它相当陌生)。数据库具有由外键和数据库生成的列组成的复合键。通过使用表名和其他外键部分之一调用 DB 函数来提供生成的列。生成的复合键部分不是唯一的,我无法更改。生成的键部分也经常用作其他表的外键。
如果我创建实体映射来指定数据库中的复合键,那么我们不能使用任何身份生成策略,这会破坏工作单元
如果我创建仅将生成的列指定为主键的实体映射,那么我可以使用 trigger-identity 来生成 id,并且我得到了工作单元,但是当我想要更新或访问一个子集合:键的其他部分不包含在 WHERE 语句中。
谁能给我任何关于如何进行的建议?
- 如果我坚持使用映射复合键,我可以扩展 nhibernate 以输出 SQL 以使用触发器身份吗?如果是这样,你能建议一个起点吗?
- 如果我映射单个列键,我可以在 HasMany 映射和更新的 WHERE 子句中包含其他属性吗?