0

假设我们有一个Entity类,它有许多字段和方法,但也有一个Component对象。出于任意原因,我们将组件数据封装在一个单独的类中。

    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 回答