C# FluentMapping与AutoInc

C# FluentMapping与AutoInc,c#,nhibernate,fluent-nhibernate,auto-increment,composite-id,C#,Nhibernate,Fluent Nhibernate,Auto Increment,Composite Id,我正在为公司应用程序创建一个传输数据工具,将数据从旧版本移到新版本,然后再移回来。因为现在我们使用的是NHibernate和FluentMapping,所以我必须映射所有的旧表,并且一个具有组合主键的表存在问题。该表如下所示: public class OldTable { public string KeyOne {get;set} public string KeyTwo {get;set} public string KeyN {get;set} public int Sequen

我正在为公司应用程序创建一个传输数据工具,将数据从旧版本移到新版本,然后再移回来。因为现在我们使用的是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。

是的,尝试为遗留数据库创建NHibernate映射是一件非常痛苦的事情。组合键是一个特别有趣的领域

当您说需要将所有字段映射为主键时,我假设您指的是复合键,因为表中最多只能有一个主键。在这种情况下,mapping类中的以下内容是否不起作用

CompositeId()
    .KeyProperty(x => x.KeyOne).KeyProperty(x => x.KeyTwo)
    .KeyProperty(x => x.KeyN).KeyProperty(x => x.Sequence)

如果您只是尝试从遗留数据库中读取数据,您可能会有一些运气,但如果是我,在这种情况下,我可能会避免尝试将NHibernate映射到旧的遗留数据库,而只是手工编写数据映射代码。根据我的经验,这可能会更快、更容易、更少痛苦。

是的,尝试为遗留数据库创建NHibernate映射是一件非常痛苦的事情。组合键是一个特别有趣的领域

当您说需要将所有字段映射为主键时,我假设您指的是复合键,因为表中最多只能有一个主键。在这种情况下,mapping类中的以下内容是否不起作用

CompositeId()
    .KeyProperty(x => x.KeyOne).KeyProperty(x => x.KeyTwo)
    .KeyProperty(x => x.KeyN).KeyProperty(x => x.Sequence)
如果您只是尝试从遗留数据库中读取数据,您可能会有一些运气,但如果是我,在这种情况下,我可能会避免尝试将NHibernate映射到旧的遗留数据库,而只是手工编写数据映射代码。根据我的经验,这可能会更快、更容易、更少痛苦。

来自:

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

在HBMXML模式中也可以看到这一点<代码>允许指定
,但
不允许

这并不是说不能将此功能添加到NHibernate。如果这对您有用,请将您的功能请求提交给。如果先在Hibernate中实现了此功能,那么您的功能请求最有可能成功—如果是这样,那么将其移植过来可能很简单。听起来它可能已经在Hibernate中实现了:

来自:

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

在HBMXML模式中也可以看到这一点<代码>允许指定
,但
不允许

这并不是说不能将此功能添加到NHibernate。如果这对您有用,请将您的功能请求提交给。如果先在Hibernate中实现了此功能,那么您的功能请求最有可能成功—如果是这样,那么将其移植过来可能很简单。听起来它可能已经在Hibernate中实现了:

实际上,我的意思是,示例中的所有字段都表示一个组合主键,问题是序列(组合中的最后一个字段),如何映射以使其正确递增?是的,它是一个双向工具。-ve投票,因为实际问题没有解决,正如上面的评论中所提到的。实际上,我的意思是,示例中的所有字段都代表一个组合主键,问题是序列(组合中的最后一个字段),如何映射以使其正确递增?是的,这是一个双向工具。-我们投票,因为实际问题并没有像上面评论中提到的那样得到解决