我在设置Fluent nHibernate映射时遇到了一些困难,我正在尝试使用Component函数构建一个包含来自两个相关数据库表的数据的对象。
下面是数据库和代码的简化版本,概述了我遇到的基本问题。
我的数据库设置类似于以下内容:
Account
- AccountId INT (PRIMARY KEY)
- Currency VARCHAR(3)
SubAccount
- SubAccountId INT (PRIMARY KEY)
- AccountId INT (FOREIGN KEY reference to Account)
- Balance DECIMAL
我正在尝试将此数据映射到以下类中:
public class Account
{
public virtual int Id { get; private set; }
public virtual string Currency { get; private set; }
}
public class SubAccount
{
public virtual int Id { get; private set; }
public virtual Account Account { get; private set; }
public virtual Money Balance { get; private set; }
}
Money
类看起来像:
public class Money
{
public decimal Value { get; private set; }
public string Currency { get; private set; }
}
我正在努力解决的部分是我试图将 SubAccount.Balance 和 Account.Currency 值映射到SubAccount.Balance
{{ 1}}对象。
我的映射类(下面)完成了大部分工作,但我无法弄清楚如何使用 SubAccount中的 Balance 值构建Money
对象表和帐户表中的货币值。
Balance
我正在尝试使用Fluent nHibernate做什么?
答案 0 :(得分:2)
我认为不可能,但是为了解决方法:
public class SubAccount
{
public virtual int Id { get; private set; }
public virtual Account Account { get; private set; }
protected virtual decimal Value { get; set; }
public virtual Money Balance { get { return new Money(Value, Account.Currency); } }
}
public class SubAccountMap : ClassMap<SubAccount>
{
public SubAccountMap()
{
Table("SubAccount");
Id(x => x.Id)
.Column("AccountId");
References(x => x.Account)
.Column("AccountId");
Map(Reveal.Property<decimal>("Value"));
}
}