我正在为公司应用程序创建传输数据工具,以将数据从旧版本移动到新版本,然后再移回。从现在开始,我们使用NHibernate和FluentMapping,我将不得不映射所有旧表,并且一个包含主键的表存在问题。该表如下所示:

public class OldTable {
 public string KeyOne {get;set}
 public string KeyTwo {get;set}
 public string KeyN {get;set}
 public int Sequence {get;set}
 ...
}


而且我需要将上述所有字段映射为一个复合键,唯一的问题是“序列”将基于其他字段递增,以避免重复的键,其他则是外键和简单字符串的混合。有没有办法做这种映射?如果创建表达式来计算序列,则没问题。

好消息是,新系统中的表仅使用整数ID。

最佳答案

documentation


  您不能使用IIdentifierGenerator生成组合键。相反,应用程序必须分配自己的标识符。


您也可以在HBM XML模式中看到这一点。 <id>允许指定<generator>,但<composite-id>不允许。

这并不是说无法将此功能添加到NHibernate中。如果这对您有用,请将您的功能请求提交到the NHibernate issue tracker。如果先在Hibernate中实现了此功能,则您的功能请求很可能会成功-如果这样,则将其移植起来可能很简单。听起来可能已经在Hibernate中实现了:
HHH-2060

关于c# - FluentMapping ComposedId与AutoInc,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10801860/

10-13 09:27