我有这个包含父元素和子元素的表。
CREATE TABLE Expenses(
[BudgetId] int,
[AccountGroupId] int,
[AccountNumber] int,
[Amount] decimal
)
在我的域模型中,它由这个层次表示:
因此,预算有一组AccountGroups,每个AccountGroup都有一个ExpenseLines集合。
如果Expenses表中的行具有AccountNumber = 0,则它是AccountGroup(父),否则它是ExpenseLine(AccountGroup的子)。
我试图在映射文件中表达这种关系:
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2">
<class name="Budget, MyCompany.Budget" table="Expenses">
<composite-id>
<key-property name="AccountGroupId" column="AccountGroupId" />
</composite-id>
<property name="BudgetId" column="BudgetId" type="int" not-null="true" />
<property name="AccountNumber" column="AccountNumber" type="int" not-null="true" />
<property name="Amount" column="Amount" />
<bag name="ExpenseLines" lazy="false" where="AccountNumber > 0 AND BudgetId = 7">
<key column="AccountGroupId" />
<one-to-many class="ExpenseLine, MyCompany.Budget" />
</bag>
</class>
</hibernate-mapping>
映射正在我将父子层次加载到我的模型中,但是现在我必须使用特定的BudgetId来避免获取所有ExpenseLines(因此AND BudgetId = 7)
如何在我的映射文件中表达这一点,以便ExpenseLines只提取与当前BudgetId匹配的行?
换句话说 - 如何摆脱“AND BudgetId = 7”部分:)