0
我正在从数据库中检索具有Guid标识符的实体...我需要将实体保存到另一个数据库并保持相同的Guid Identifier.Right现在,NHibernate正在生成一个新的Guid每次我执行保存操作时,这是正常的,因为我以这种方式为实体配置了映射文件。 有没有可能在运行时为我的用例修改映射?在运行时更改NHibernate模型映射
下面是我如何定义我的ID映射,如果可能,我想保留它。
public class OrderMap : ClassMap<Order>
{
public OrderMap()
{
Table("t_Order");
Id(o => o.Id).GeneratedBy.GuidComb();
.....
.....
.....
}
}
这里是我尝试改变IdentifierStrategyGenerator,但没有效果,NHibernate的分配新的GUID为每个保存操作,而我失去了希望的标识符。
private void UpdateClientDatabase()
{
var key = HibernateMultipleDatabasesManager.Configuration
.GetClassMapping(typeof(Order)).Key as NHibernate.Mapping.SimpleValue;
key.IdentifierGeneratorStrategy = "assigned";
key.NullValue = "undefined";
using (var session = HibernateMultipleDatabasesManager.DataSessionFactory("SQLiteDatabase").OpenSession())
{
_downloadedOrders.OfType<Order>().ForEach(_ => session.Save(_));
}
}
我知道这是一个更多的工作,但你可以旋转2个会话工厂与不同的映射。 – Fran
同意@Fran。您可以在运行时注入您选择的会话。 –