如何在 Fluent NHibernate 中创建基实体和基类映射
Posted
技术标签:
【中文标题】如何在 Fluent NHibernate 中创建基实体和基类映射【英文标题】:How to create base entity and base class map in Fluent NHibernate 【发布时间】:2016-04-10 17:16:46 【问题描述】:我在所有表中都有公共列“Id、IsActive、CreateDate”。现在我想在我的基本实体中移动“Id,IsActive,CreateDate”,并且还想创建基本映射。如何在 Fluent NHibernate 中实现这一点?
【问题讨论】:
【参考方案1】:您可以像这样创建基本映射:
public class BaseMap<T> : ClassMap<T> where T : Address
public BaseMap()
Id(x => x.Id);
Map(x => x.IsActive);
Map(x => x.CreateDate);
public class SomeEntityMap: BaseMap<SomeEntity>
public CustomerAddressMap()
Table("SomeTable");
Map(x => x.SomeProperty);
public class Entity
public virtual Guid Id get; set;
public virtual bool IsActive get; set;
public virtual DateTime CreateDate get; set;
public class SomeEntity : Entity
public virtual string SomeProperty get; set;
【讨论】:
但是我放置公共属性的基本实体在哪里? 您必须创建它,但从您上面的评论来看,您似乎已经创建了具有这些属性的基本实体。 @ZeeshanMehmood 我已经编辑了我的解决方案,使其更适合您的示例 根据我的研究,最佳实践表明基本实体应该是抽象的,并且必须覆盖 Equals 和 GetHashCode 方法。同样在基类映射中,您说“where T:Address”,但“Address”没有任何类。 哈哈。这是您问题的正确答案。您在任何地方都没有询问如何使用 nhibernate 最佳实践创建基类。即使你这样做了,我怀疑你会得到答案。你必须在网上做一些研究,找出最适合你的方法。以上是关于如何在 Fluent NHibernate 中创建基实体和基类映射的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Fluent NHibernate 中创建基实体和基类映射
如何使用 Fluent 设置 NHibernate.Burrow?
如何在 Fluent NHibernate ClassMap 类中指定表名?
Fluent nHibernate - 如何在联结表上映射非键列?