流畅的NHibernate不同基本类型的不同约定

时间:2010-10-08 12:04:59

标签: fluent-nhibernate naming-conventions conventions

此时我们将所有实体和映射保持为相同的程序集。我们的实体派生自一个基本类Entity,它是一个EntityWithTypedId

此外,我们还有一个表格名称,用于表示多重表格名称。

现在我想创建其他两种基本类型e.q. AggregateRootEntity和AggregateEntity都来自Entity。 我想为两个基本实体创建两组约定:

让我们说: 对于派生自AggregateRootEntity表的所有实体,应该以“ag_”为前缀,并且Id是增量生成的,但是对于从AggregateEntity表派生的所有实体,应该以“a_”为前缀,并且应该分配ID。

是否可以根据某些条件设置约定?

1 个答案:

答案 0 :(得分:1)

您可以使用多种约定来执行此操作,每种约定都在其Accept方法中检查特定类型

类似的东西:

public class LegacyEntityTableConvention : IClassConvention, IClassConventionAcceptance
{
  public void Accept(IAcceptanceCriteria<IClassInspector> criteria)
  {
    criteria.Expect(x => x.EntityType.IsAny(typeof(OldClass), typeof(AnotherOldClass)));
  }

  public void Apply(IClassInstance instance)
  {
    instance.Table("tbl_" + instance.EntityType.Name);
  }
}

只是FNH Wiki中的一段代码 http://wiki.fluentnhibernate.org/Acceptance_criteria