我在将表A中的列映射到类的属性时遇到问题,该类主要映射到表B.以下更好地解释了这一点:
有一个CustomerRisk类,它具有Risk和CustomerNumber属性。
在数据库中,它由两个表组成:Customer,其中包含CustomerNumber列,CustomerRisk,其具有Customer的外键,以及一个Risk。
映射风险并不难,但映射CustomerNumber是个问题。是否可以在不创建Customer类*的情况下执行此操作?这样NHibernate就会加入Customer类来选择CustomerNumber:
select cn.CustomerNumber, r.Description
from CustomerRisk cr
inner join Customer c on c.CustomerID = cr.CustomerID
inner join Risk r on r.RiskID = cr.RiskID
多个CustomerRisk记录当然可以具有相同的CustomerID。
希望这有点清楚,非常感谢。
答案 0 :(得分:0)
使用NHibernate时要记住的一件事是它处理实体并且只知道你告诉它的内容(通过映射文件)。 HQL是面向对象的SQL版本,因此您无法使用它来访问不属于映射域模型的字段。
您仍然可以通过NHibernate会话执行普通的旧SQL,这实际上是访问未映射到ORM的数据的唯一方法。可能有一个轻量级的映射解决方案(虽然我不能说没有看到你的数据模型),但如果你反对完全映射“客户”,我认为SQL是你最好的选择。