Fluent NHibernate 为重叠实体创建实体映射

Posted

技术标签:

【中文标题】Fluent NHibernate 为重叠实体创建实体映射【英文标题】:Fluent NHibernate Create entity mapping for overlapping entities 【发布时间】:2015-06-20 11:36:14 【问题描述】:

例如。我的数据库中有两个表

NonResidentStudents - 列 studentID、studentname、ModeOfTransport

ResidentStudents - 列 studentID、studentname、DateOfJoiningHostel

studentID 和 studentName 是公共列,最后一列在两者之间不常见

由于某种原因,我无法更改这些表或定义一个公共主表并在子表中创建不常见的列。所以桌子结构是刚性的。

现在,当尝试使用 FLUENT NHIBERNATE(仅)为上述模式创建实体和映射时,我想知道是否可以为公共列定义某种公共实体和公共映射,并创建继承自的子实体共同实体。在子实体和映射类中,我将对不常见的列进行表示。任何人都可以分享如何做到这一点的代码。

【问题讨论】:

【参考方案1】:

我以前做过。

普通类

public class BaseMapping : ClassMap<EntityBase>

    public BaseMapping ()
    
        UseUnionSubclassForInheritanceMapping ();
        // All the rest of the mapping attributes
    

对于将从基类继承的单个类,请执行以下操作:

public class DepartmentMapping : SubclassMap<Department>

    public DepartmentMapping ()
    
        Abstract ();
        // Map all the unique attributes
    

上面的代码将创建一个基于 Department 和 EntityBase 的类。它不会创建一个名为 EntityBase 的表。

【讨论】:

以上是关于Fluent NHibernate 为重叠实体创建实体映射的主要内容,如果未能解决你的问题,请参考以下文章

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

Fluent NHibernate 实体 HasMany 不同子类类型的集合

Fluent 映射和 NHibernate Xml 配置

Fluent nHibernate 保存或更新派生实体

Fluent NHibernate 自动映射:一对多实体,多对多后端?

Fluent Nhibernate将集合映射到通用实体