如何创建一个忽略没有setter的属性的Fluent NHibernate约定

Arn*_*psa 4 c# conventions nhibernate-mapping fluent-nhibernate

我正在寻找一个忽略所有没有setter的属性的FluentNH(Fluent NHibernate)约定或配置:

它仍然会映射这些:

public class foo{
  public virtual int bar {get; private set;}
}
Run Code Online (Sandbox Code Playgroud)

并省略这些:

public class foo{
  public virtual int fizz{get;private set;}
  public virtual int bar{get {return fizz;}} //<-------
}
Run Code Online (Sandbox Code Playgroud)

mat*_*ieu 7

您应该使用自定义映射配置

public class DefaultMappingConfiguration : DefaultAutomappingConfiguration
{
    public override bool ShouldMap(Member member)
    {
        return member.CanWrite;
    }
}
Run Code Online (Sandbox Code Playgroud)

用法:

var nhConfiguration = new Configuration().Configure();
var mappingConfiguration = new DefaultMappingConfiguration();

var.fluentConfiguration = Fluently.Configure(nhConfiguration );
    .Mappings(m => m.AutoMappings.Add(
        AutoMap.AssemblyOf<MappedType>(mappingConfiguration)
    ));

var sessionFactory = this.fluentConfiguration.BuildSessionFactory();
Run Code Online (Sandbox Code Playgroud)

但是,私有的setter不会被映射.你应该让他们受到保护

  • 这省略了`private set;`的道具. (2认同)