Fluent:表名与实体名不同

时间:2010-03-25 15:13:55

标签: c# nhibernate fluent-nhibernate

我试图使用Fluent与nHinbernate的自动化功能来映射一个名称与表名不同的类。

(这纯粹是出于文体的原因,我们有一个名为Foo的类,它包含一个名为Bar的对象,但表名是FooBar。我们宁愿没有属性Foo.FooBar。)

我找不到任何详细说明如何给Fluent提供这一变化的线索。

2 个答案:

答案 0 :(得分:7)

使用classmap,您可以在mapping中指定表名。

public class BarMap : ClassMap<Bar>
{
    public BarMap()
    {
        Table("FooBar");
    }
}

使用automap,您可以覆盖表名。

.Mappings( m => m.AutoMappings.Add( AutoMap.AssemblyOf<Bar>()
    .Override<Bar>( b => {
        b.Table("FooBar");
}))

您还可以使用conventions来影响所有实体的表命名。

答案 1 :(得分:2)

您可以在映射中指定表名。所以它看起来像这样:

public class FooMap : ClassMap<Foo>
{
  Table("FooBar");

  // Rest of your mapping goes here.
}