Fluent Nhibernate从另一个表映射属性

时间:2009-04-21 13:08:57

标签: nhibernate fluent-nhibernate

我在将表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。

希望这有点清楚,非常感谢。

  • 我知道你通常需要一个客户课程,但我已经'匿名'了这些课程。

1 个答案:

答案 0 :(得分:0)

使用NHibernate时要记住的一件事是它处理实体并且只知道你告诉它的内容(通过映射文件)。 HQL是面向对象的SQL版本,因此您无法使用它来访问不属于映射域模型的字段。

您仍然可以通过NHibernate会话执行普通的旧SQL,这实际上是访问未映射到ORM的数据的唯一方法。可能有一个轻量级的映射解决方案(虽然我不能说没有看到你的数据模型),但如果你反对完全映射“客户”,我认为SQL是你最好的选择。