How to fine tune FluentNHibernate's auto mapper?

前端 未结 3 1454
广开言路
广开言路 2020-12-15 13:35

Okay, so yesterday I managed to get the latest trunk builds of NHibernate and FluentNHibernate to work with my latest little project. (I\'m working on a bug tracking applica

3条回答
  •  盖世英雄少女心
    2020-12-15 14:03

    It's not widely known, but you can set many conventions from the Mappings section in your Configure code e.g.

    Fluently.Configure()
      .Database(/* database config */)
      .Mappings(m =>
      {
        m.FluentMappings
          .AddFromAssemblyOf()
          .Conventions.Add(PrimaryKey.Name.Is(x => "ID"));
      })
    

    to set a Primary Key convention.

    Edit: Clarification of what the PrimaryKey convention does:

    The PrimaryKey convention is used to specify what the column of the primary key is, not the property. Discovering the property is a pure automapping exercise, while conventions are applied to ClassMaps and automappings. – James Gregory

    This is the list of supported conventions (from the wiki):

    Table.Is(x => x.EntityType.Name + "Table")
    PrimaryKey.Name.Is(x => "ID")
    AutoImport.Never()
    DefaultAccess.Field()
    DefaultCascade.All()
    DefaultLazy.Always()
    DynamicInsert.AlwaysTrue()
    DynamicUpdate.AlwaysTrue()
    OptimisticLock.Is(x => x.Dirty())
    Cache.Is(x => x.AsReadOnly())
    ForeignKey.EndsWith("ID")
    

    See The Simplest Conventions section on the FNH wiki.

提交回复
热议问题