У меня возникают трудности с настройкой отображения 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
Money
.
Мои классы отображения (ниже) выполняют большую часть работы, но я не могу понять, как создать объект Balance
, используя значение Balance из SubAccount таблица и значение Валюта из таблицы Account .
public class AccountMap : ClassMap<Account>
{
public AccountMap()
{
Table("Account");
Id(x => x.Id)
.Column("AccountId");
Map(x => x.Currency)
.Column("Currency");
}
}
public class SubAccountMap : ClassMap<SubAccount>
{
public SubAccountMap()
{
Table("SubAccount");
Id(x => x.Id)
.Column("AccountId");
References(x => x.Account)
.Column("AccountId");
Component(x => x.Balance,
m =>
{
m.Map(y => y.Value)
.Column("Balance");
m.Map(y => y.Currency)
.Column("Account.Currency"); // <-- This is where I get stuck
});
}
}
Возможно ли то, что я пытаюсь сделать, используя Fluent nHibernate?