NHibernate-如何为Id动态切换生成器?

NHibernate-如何为Id动态切换生成器?,nhibernate,nhibernate-mapping,Nhibernate,Nhibernate Mapping,现在,我将所有映射都设置为hbm.xml。我希望在运行时(应用程序启动)将某些实体的Id生成器类型从“标识”动态切换到“已分配” 这是因为我需要支持从以前的系统导入数据并保留现有ID 这可能吗?怎么做?不清楚为什么需要保留现有id。我认为你不需要保留现有的身份证。也许你需要保留备用身份证 如果以前的系统有自己的数据库,则您可以: 1) 其他数据库中的其他表需要另一个映射 2) 将数据复制到现有数据库(使用密钥标识) 这意味着你无论如何都需要新的身份证。 示例:假设您要复制“airlines”表,

现在,我将所有映射都设置为hbm.xml。我希望在运行时(应用程序启动)将某些实体的Id生成器类型从“标识”动态切换到“已分配”

这是因为我需要支持从以前的系统导入数据并保留现有ID


这可能吗?怎么做?

不清楚为什么需要保留现有id。我认为你不需要保留现有的身份证。也许你需要保留备用身份证

如果以前的系统有自己的数据库,则您可以: 1) 其他数据库中的其他表需要另一个映射 2) 将数据复制到现有数据库(使用密钥标识)

这意味着你无论如何都需要新的身份证。
示例:假设您要复制“airlines”表,而以前的系统使用“Airliner code”作为主键。您可以在新数据库中使用一个整数作为主键,使用airlinecode作为备用键。

不清楚为什么需要保留现有id。我认为你不需要保留现有的身份证。也许你需要保留备用身份证

如果以前的系统有自己的数据库,则您可以: 1) 其他数据库中的其他表需要另一个映射 2) 将数据复制到现有数据库(使用密钥标识)

这意味着你无论如何都需要新的身份证。
示例:假设您要复制“airlines”表,而以前的系统使用“Airliner code”作为主键。您可以在新数据库中使用整数作为主键,使用airlinecode作为备用键。

生成器是映射的一部分,因此您需要在创建会话工厂之前更改映射

使用Fluent或ConfORM很容易做到这一点。可以在将XML映射提供给配置之前更改它们,但这很麻烦


只需检查配置标志(启动应用程序时将更改该标志),然后调用相应的生成器。

生成器是映射的一部分,因此您需要在创建会话工厂之前更改映射

使用Fluent或ConfORM很容易做到这一点。可以在将XML映射提供给配置之前更改它们,但这很麻烦


只需检查配置标志(启动应用程序时将更改该标志),然后调用相应的生成器。

这很简单。其他系统会保留这些ID,并在从我的系统获取数据时使用它们。好的,清除。迭戈的回答很好。当然,您可以有多个SessionFactory,因此可以使用不同的配置。祝你好运:)很简单。其他系统会保留这些ID,并在从我的系统获取数据时使用它们。好的,清除。迭戈的回答很好。当然,您可以有多个SessionFactory,因此可以使用不同的配置。祝你好运:)