我一直在使用流利的nhibernate几个月,我认为这是一个非常灵活的工具(即使'工具'可能是不正确的术语):)
我正在研究一个新项目,我仍在考虑使用流畅的nhibernate解决方案将我的数据库映射到存储库层 . 问题是,由于某些原因我真的不明白,数据库不是“标准”结构 .
我的意思是外键不引用表,但我知道有些情况下:
表X:列A类型nvarchar表Y:列A类型int
X是包含数据的表(以代码的形式),而Y是包含X.A描述的表 .
好像这是一个荒谬的情况!但我无法对数据库做任何事情 . 所以问题是:我可以用流利的nhibernate映射这些表,即使列是不同类型的引用它们吗?
thx提前
2 回答
不,NHibernate不支持具有完全不同数据类型的外键 .
现在,考虑到这是一个 new 项目,您需要做的是修复数据库 .
是的,不是 . 您可以映射表,但不能映射关系 . 这将为您提供一个贫血的域模型和存储库方法来检索相关对象,即从
GetOrdersForCustomer()
方法而不是Customer.Orders
集合访问订单 .另一种可能性是为这些属性创建自定义用户类型,例如
IntStoredAsString
. 我只使用自定义类型的属性,所以我不确定它们作为外键的效果如何 .