流畅的NHibernate组件共享列

时间:2011-11-09 20:10:02

标签: nhibernate fluent-nhibernate components

如何拥有一个组件,多次出现在实体上,并且共享组件中的一个列?

    mapping.Component(x => x.Price1, m =>
    {
        m.Map(x => x.Amount).Column("OfferPrice");
        m.Map(x => x.Group).Column("CurrencyConverterRateGroupID");
    });

    mapping.Component(x => x.Price2, m =>
    {
        m.Map(x => x.Amount).Column("OfferPrice2");
        m.Map(x => x.Group).Column("CurrencyConverterRateGroupID");
    });

插入过程中出现此错误,只是说无法获得53列53或其他内容。当它有映射问题时,这是一般错误。选择正常工作,但无法插入或更新。

2 个答案:

答案 0 :(得分:2)

您无法在映射中将同一列映射两次。您需要将CurrencyConverterRateGroupID拉出组件。

答案 1 :(得分:2)

您可以映射到相同的列,但您必须只读取其中一列

mapping.Component(x => x.Price1, m =>
{
    m.Map(x => x.Amount).Column("OfferPrice");
    m.Map(x => x.Group).Column("CurrencyConverterRateGroupID");
});

mapping.Component(x => x.Price2, m =>
{
    m.Map(x => x.Amount).Column("OfferPrice2");
    m.Map(x => x.Group).Column("CurrencyConverterRateGroupID").Readonly();
});