流畅的Nhibernate映射传统数据库与复合键

时间:2012-07-10 02:43:18

标签: nhibernate fluent-nhibernate

我正在使用传统Oracle数据库开发的应用程序中使用Fluent NHibernate(我相当新)。 DB具有由外键和数据库生成的列组成的复合键。生成的列是通过调用具有表名的DB函数和其他一个外键部分来提供的。生成的复合关键部分不是唯一的,我无法改变它。生成的关键部分通常也用作其他表的外键。

如果我创建实体映射来指定数据库中的复合键,那么我们就不能使用任何打破工作单元的身份生成策略

如果我创建的实体映射只指定生成的列作为主键,那么我可以使用trigger-identity生成id,并且我得到了工作单元,但是当我想要更新时我遇到了问题,或访问子集合:密钥的其他部分不包含在WHERE语句中。

有人可以就如何进行任何建议吗?

  • 如果我坚持使用映射复合键,我可以扩展nhibernate来输出SQL以使用trigger-identity吗?如果是这样,你能提出一个起点吗?
  • 如果我映射单个列键,是否可以在WHERE子句中包含其他属性以用于HasMany映射和更新?

1 个答案:

答案 0 :(得分:1)

不幸的是,正如您已经发现的那样,此设置根本没有任何支持。

我的建议是手动执行INSERTS(例如,使用自定义SQL)。是的,这打破了UoW,但identity也是如此。