【发布时间】:2017-02-09 00:16:20
【问题描述】:
出于“遗留原因”,我有一个 Account 表和一个 Transaction 表,没有从 Transaction 表到 Account 表的外键引用。 NHibernate Account 表的映射 XML 如下所示:
<class name="Account" table="[tblAccount]" lazy="true">
<id name="ID" column="ID" type="Int32">
<generator class="native" />
</id>
<version name="NHVersion" column="[NHVersion]" unsaved-value="0" />
<property name="AccountNumber" column="[AccountNumber]" type="String" not-null="true" length="30" />
<property name="FormattedAccountNumber" column="[FormattedAccountNumber]" type="String" not-null="true" length="30" />
<property name="Title" column="[Title]" type="String" not-null="true" length="30" />
<many-to-one name="AccountCode" column="tblAccountCodeID" class="AccountCode" cascade="none" />
<one-to-one name="AccountSegment" cascade="all" class="AccountSegment" property-ref="Account" />
<bag name="Categories" table="tblAccountCategory" lazy="true" inverse="false">
<key column="tblAccountID" />
<many-to-many class="Category" column="tblCategoryID" />
</bag>
</class>
Transaction 表的映射 XML 是:
<class name="Transaction" table="[tblTransaction]" lazy="true">
<id name="ID" column="ID" type="Int32">
<generator class="native" />
</id>
<version name="NHVersion" column="[NHVersion]" unsaved-value="0" />
<property name="GLAccount" column="[GLAccount]" type="String" not-null="true" length="30" />
<property name="Description" column="[Description]" type="String" not-null="true" length="60" />
<property name="Amount" column="[Amount]" type="Decimal" not-null="true" />
</class>
可以使用GLAccount 列查询给定帐户的交易表行。以下 SQL 有效:
select act.FormattedAccountNumber, act.Title, trn.Date, trn.Amount
from tblAccount act
left join tblTransaction trn on act.AccountNumber = trn.GLAccount
where act.AccountNumber = '011020'
如何定义帐户交易的映射?似乎没有办法为每个表指定列名。也许使用where?我查看了这个question and answer,但它似乎不适用于我的情况。
【问题讨论】:
标签: c# sql-server nhibernate