小编Gar*_*ian的帖子

使用NHibernate在多个数据库之间复制实体

我有一个桌面(winforms)应用程序,它使用Firebird数据库作为数据存储(在嵌入模式下),我使用NHibernate进行ORM.我们需要支持的功能之一是能够从外部文件导入/导出数据组.目前,此外部文件也是与主数据库具有相同模式的数据库.

我已经设置NHibernate来查看多个数据库,我可以同时使用两个数据库.但问题是在两个数据库之间复制数据.我有两个复制策略:(1)复制所有相同的ID对象[aka导入/导出]和(2)复制与大多数新ID [aka复制/复制].我说"大多是新的",因为有些查找项总是会被复制为具有相同的ID.

使用新ID复制所有内容很好,因为我只有一个"CopyForExport"方法可以创建所有内容的副本而不分配新ID(或清除对象树中的所有ID).

在保持相同ID的同时,处理这种情况以及在数据库之间复制数据的"最佳实践"方法是什么?

澄清:我不是试图同步两个数据库,只是导出一个子集(用户可选)或数据传输给其他人(然后将数据子集导入他们自己的数据库).

进一步说明:我认为我已经将问题分解为:我想使用NHibernate的ISession.SaveOrUpdate特性,所以我用一个没有"赋值"的身份生成器来设置我的实体.但是,当我想覆盖生成的标识(在同一进程中复制多个数据库之间的数据)时,我遇到了问题.

有没有办法使用Guid.Comb或UUID生成器,但有时可以指定我自己的标识符(用于传输到具有相同模式的不同数据库连接).

nhibernate winforms

12
推荐指数
1
解决办法
4041
查看次数

标签 统计

nhibernate ×1

winforms ×1