Fluent NHibernate 对于不同的基本类型有不同的约定

发布于 2024-09-26 15:14:28 字数 347 浏览 7 评论 0原文

目前,我们将所有实体和映射保留在同一个程序集中。我们的实体派生自一个基本类 Entity,它是一个 EntityWithTypedId

此外,我们还有一个表名约定,告诉您将表名复数化。

现在我想创建另外两个基本类型 eq AggregateRootEntity 和 AggregateEntity,它们都派生自 Entity。 我想为两个基本实体创建两组约定:

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

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

At this moment we are keeping all Entities and Mappings into same assembly. Our entities derived from a basic class Entity which is an EntityWithTypedId

Also we are having a table name Convention telling to pluralize the table names.

Now I want to create other two base types e.q. AggregateRootEntity and AggregateEntity, both derive from Entity.
And I would like to create two set of conventions for both base entities:

Let's say:
For for all entities derived from AggregateRootEntity tables should be prefixed with "ag_" and Id is incremental generated, but for all entities derived from AggregateEntity tables should be prefixed with "a_" and Ids should be assigned.

Is it possible to Set Conventions based on some conditions?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

旧伤还要旧人安 2024-10-03 15:14:28

您可以使用多个约定来完成此操作,每个约定都在其 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);
  }
}

Just a block of code out of the FNH Wiki
http://wiki. Fluentnhibernate.org/Acceptance_criteria

You can do it with multiple conventions, each checking for a specific type in their Accept methods

something like:

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);
  }
}

Just a block of code out of the FNH Wiki
http://wiki.fluentnhibernate.org/Acceptance_criteria

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文