0

多くのフィールドとメソッドがあり、ComponentオブジェクトもあるEntityクラスがあるとします。コンポーネントデータは、任意の理由で別のクラスにカプセル化されています。

    public class Entity
    {
            //...other stuff

            public virtual Component Component { get; protected set; }

            //...other stuff
    }

コンポーネントには多くの責任がありますが、すべてプライベートフィールドである3つのフィールドのみがあるとします。任意の理由でフィールドを非公開にしました。

    public class Component
    {
         //...other stuff

         private string fieldName1 { get; set; }
         private string fieldName2 { get; set; }
         private string fieldName3 { get; set; }

         //...other stuff
    }

ここで、エンティティがデータベース内のテーブルに対応しているとしましょう。そのテーブルには、コンポーネントの各フィールドの列が必要です。それぞれ「columnName1」、「columnName2」、「columnName3」と呼びます。

問題は 、Fluent NHibernateを使用して、エンティティ(データベース内のテーブルに対応する)に属するコンポーネントオブジェクトからプライベートフィールドデータを永続化するにはどうすればよいかということです。

4

1 に答える 1

1

次のように、エンティティの自動マッピングをオーバーライドします。

using FluentNHibernate.Automapping.Alterations;

public class EntityOverride : IAutoMappingOverride<Entity>
{
    public void Override(AutoMapping<Entity> mapping)
    {
         mapping.Component(x => x.Component, c => 
         {
               c.Map(Reveal.Member<Component>("fieldName1"),"columnName1");
               c.Map(Reveal.Member<Component>("fieldName2"),"columnName2");
               c.Map(Reveal.Member<Component>("fieldName3"),"columnName3");
         });
    }
}
于 2013-01-29T22:46:16.783 に答える