2009-01-16 37 views
1

我目前的项目连接到两个不同的数据库,除了主键之外,它在各方面都几乎完全相同。使用NHibernate可以将ID映射到某种通用类型?是否有可能将ID映射到NHibernate中的未知类型?

我主要关心的是将ID映射到Int64或Guid。

重新编译项目使交换机不是问题,我知道映射文件将需要知道正确的类型,我只想尝试并避免每个表有两个单独的类。

感谢,

保罗

回答

2

如果任何人的兴趣我已经解决了通过使用对象类型的所有ID的(黑客)这一点。 NHibernate实际上不允许你从Int64或Guid映射到对象,所以我通过在映射文件中不引用它(不使用Id标签上的name属性)来解决这个问题。然后在DAO中,我只需调用session.GetIdentifier(...)并设置它。这有点破解,但由于NHibernate使用对象来引用Id,无论如何,我很乐意与之共存。

如果任何人有一个更漂亮的解决方案,我仍然感兴趣。

0

也许写一个自定义类型,做字符串解析来确定类型?它仍然不会直接成为Int64和Guid,但是无论如何你可以使它更正式。然后添加你可以调用像if (theobject.Id.IsInt) { /* do stuff with */ theObject.Id.GetInt(); }

一些属性(自定义类型在Hibernate文档解释得很好。)

相关问题