【发布时间】:2013-11-20 03:03:29
【问题描述】:
这不是一个真正常见的情况,但在这个特殊的情况下,任务是完成这个:
- 序列化数据库 A 中使用 NHibernate 加载的现有实体列表
- 将序列化的实体导出到文件
- 将序列化的实体文件导入数据库 B,使用 NHibernate 作为持久化代理
问题是实体地图用 ID 生成器标记:
public class EntityMap
{
public EntityMap()
{
Id(x => x.Id)
.GeneratedBy.Guid();
// Other properties
}
}
有了这个映射,我每次打电话:
ISession session = NHibernateSession.GetSession();
IList<Entity> entities = // Load entity from serialized object in a file
foreach(entity in entities)
{
session.Save(entity);
}
NHibernate 不断为这些实体生成新的 Id。
有没有办法保持映射具有 Id 生成策略,但能够以某种方式保留具有预定义 Id 的现有实体?
【问题讨论】:
-
如果你有两个数据库,你必须有两个
SessionFactories对吧? -
不,它实际上是 1 个单独的应用程序和数据库,但通过数据库 A 和 B 分发给多个客户端>
标签: c# mysql nhibernate orm fluent-nhibernate