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