C# 如何在Fluent NHibernate中创建基本实体和基类映射

C# 如何在Fluent NHibernate中创建基本实体和基类映射,c#,nhibernate,orm,fluent-nhibernate,C#,Nhibernate,Orm,Fluent Nhibernate,我在所有表中都有公共列“Id、IsActive、CreateDate”。现在我想在我的基本实体中移动“Id,IsActive,CreateDate”,还想创建基本映射。如何在Fluent NHibernate中实现这一点?您可以创建如下基本映射: public class BaseMap<T> : ClassMap<T> where T : Address { public BaseMap() { Id(x => x.Id);

我在所有表中都有公共列“Id、IsActive、CreateDate”。现在我想在我的基本实体中移动“Id,IsActive,CreateDate”,还想创建基本映射。如何在Fluent NHibernate中实现这一点?

您可以创建如下基本映射:

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; }
}
public class BaseMap:ClassMap其中T:Address
{
公共底图()
{
Id(x=>x.Id);
Map(x=>x.IsActive);
映射(x=>x.CreateDate);
}
}
公共类SomeEntityMap:BaseMap
{
公共CustomerAddressMap()
{
表(“SomeTable”);
Map(x=>x.SomeProperty);
}
}
公共类实体
{
公共虚拟Guid Id{get;set;}
公共虚拟布尔是活动的{get;set;}
公共虚拟日期时间CreateDate{get;set;}
}
公共类SomeEntity:Entity
{
公共虚拟字符串SomeProperty{get;set;}
}

但我将常用属性放在的基本实体在哪里?你必须创建它,但从你上面的评论来看,似乎你已经用这些属性创建了一个基本实体。@ZeeshanMehmood我已经编辑了我的解决方案,以便更具体地针对你的示例根据我的研究,最佳实践表明,基本实体应该是抽象的,并且必须重写Equals和GetHashCode方法。同样在基类映射中,你们说了“where T:Address”,但并没有任何“Address”的类。哈哈。这是你问题的正确答案。您从未询问过如何使用nhibernate最佳实践创建基类。即使你这么做了,我也怀疑你会得到答案。你必须在网上做一些研究,找出最适合你的方法。