我的当前项目连接到两个独立的数据库,除了主键外几乎完全相同。使用NHibernate可以将ID映射到某种泛型类型吗?
我主要关心的是将ID映射到Int64或Guid。
重新编译项目以使切换不成问题,我知道映射文件需要知道正确的类型,我只想尝试避免为每个表都有两个单独的类。
谢谢,
保
答案 0 :(得分:2)
如果有人感兴趣我通过使用所有ID的对象类型来解决(黑客攻击)这个问题。 NHibernate实际上不允许你从Int64或Guid映射到一个对象,所以我通过不在映射文件中引用它(不使用Id标记上的name属性)来解决这个问题。然后在DAO中,我只需调用session.GetIdentifier(...)并进行设置。这有点像黑客,但是NHibernate使用对象来引用Id,我很高兴能够与之共存。
如果有人有解决方案,我仍然对更漂亮的解决方案感兴趣。
答案 1 :(得分:0)
也许写一个自定义类型进行字符串解析来计算类型?它仍然不会直接成为Int64和Guid,但无论如何你都可以使它更正式。然后添加一些您可以调用的属性,如if (theobject.Id.IsInt) { /* do stuff with */ theObject.Id.GetInt(); }
(在Hibernate文档中很好地解释了自定义类型。)