У меня есть класс, Item
, который имеет много Rates
.Они обозначены перечислением, RateType
.
public class Item
{
int Id {get;set;}
IDictionary<RateType, Rate> Rates {get;set;}
// some other stuff
}
public class Rate
{
RateType Type {get;set;}
decimal Amount {get;set;}
decimal Quantity {get;set;}
}
Я переопределяю свое отображение таким образом:
public void Override(FluentNHibernate.Automapping.AutoMapping<Item> mapping)
{
mapping.HasMany(x => x.Rates)
.AsMap(x => x.Type)
.KeyColumns.Add("Item_Id")
.Table("InvoiceItem_Rates")
.Component(x => x.Map(r => r.Amount))
.Component(x => x.Map(r => r.Quantity))
.Cascade.AllDeleteOrphan()
.Access.Property();
}
Это имеет две проблемы с ним.
1) Когда я выбираю элемент, Type
помещается в качестве ключа словаря без проблем.Однако оно не присваивается свойству Type
в Rate
.
2) Я ожидаю три столбца в таблице InvoiceItem_Rates
(Item_Id
, Type
, Quantity
и Amount
. Однако Amount
подозрительно отсутствует.
Почему эти вещи происходят? Что я делаю не так?