【问题标题】:How to create base entity and base class map in Fluent NHibernate如何在 Fluent NHibernate 中创建基实体和基类映射
【发布时间】:2016-04-10 17:16:46
【问题描述】:

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

【问题讨论】:

    标签: c# nhibernate orm 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 最佳实践创建基类。即使你这样做了,我怀疑你会得到答案。你必须在网上做一些研究,找出最适合你的方法。
    猜你喜欢
    • 2015-06-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多