Fluent Nhibernate 如何在 SubclassMap 中指定 Id()

2024-06-18

我正在使 Fluent NHibernate 适应我们现有的遗留应用程序,并尝试确定如何将 ClassMap 和 SubclassMap 用于所示的实体层次结构。

// BaseObject contains database columns common to every table
public class BaseObject
{
    // does NOT contain database id column
    public string CommonDbCol1 { get; set; }
    public string CommonDbCol2 { get; set; }
    // ...
}

public class Entity1 : BaseObject
{
    public int Entity1Id { get; set; }
    // other Entity1 properties
}

public class Entity2 : BaseObject
{
    public int Entity2Id { get; set; }
    // other Entity2 properties
}

Entity1 和 Entity2 的标识列按每个表进行唯一命名。 BaseObject 包含所有实体共有的列。我没有使用 AutoMapping,并且认为我可以在 BaseObject 上使用 ClassMap,然后在每个实体上使用 SubclassMap,如下所示:

public class Entity1Map : SubclassMap<Entity1>
{
    public Entity1Map()
    {
        Id(x => x.Entity1Id);
        // ...
    }
}

问题是,没有为 SubclassMap 定义 Id()。那么,我如何在每个 Entity1Map、Entity2Map...(我们有 100 多个实体类全部继承自 BaseObject)中指定实体特定的 Id 是什么?

预先感谢您的任何见解!


在 Fluent NHibernate 或 NHibernate 中都不可能做到这一点。您实际上希望您的类映射为子类,还是只是希望它们共享公共映射?如果您确实想要子类,那么您将需要让它们共享标识列,没有其他办法;如果您不需要实际的子类,请创建一个抽象ClassMap<T> where T : BaseObject并映射其中的公共属性。

就像是:

public abstract class BaseObjectMap<T> : ClassMap<T> where T : BaseObject
{
  public BaseObjectMap()
  {
    Map(x => x.CommonProperty1);
  }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Fluent Nhibernate 如何在 SubclassMap 中指定 Id() 的相关文章

随机推荐

  • 在 JBoss EAP 5.1 中为特定 MDB 配置 maxSession 属性

    如何使 MDB 的 maxSession 值可由用户配置 有一个 MDB 侦听来自特定队列的消息 它被定义为注释 ActivationConfigProperty propertyName maxSession propertyValue
  • 如何在 grails 域类中设置默认值

    有没有办法为域类属性设置默认值 我有一堂课叫PayMethod 我想要的地方name属性默认为 Cash 我在创建此表时想要这个默认值 这可以使用约束吗 package abc import util UserUtil import emb
  • 如何得到决策树的ROC曲线?

    我正在努力寻找ROC曲线 and AUROC曲线对于决策树 我的代码是这样的 clf fit x y y score clf fit x y decision function test col pred clf predict proba
  • 如何获得打开另一个活动的按钮?

    我已在活动 XML 文件中添加了一个按钮 但无法用它来打开我的其他活动 有人可以逐步告诉我如何做到这一点吗 A 确保您的其他活动已在清单中声明
  • 检查 Future 是否完成

    在 m3 之前 您可以使用 completer future isComplete 检查未来是否已完成 但这似乎已经消失了 有替代品吗 或者我需要自己保存它 似乎在 CompleterImpl 内部仍然有一个字段 isComplete 但它
  • 由于找不到“setup.py”或“pyproject.toml”,pip 安装失败

    我有一个 sh 脚本行 作为 Jenkinsfile groovy 脚本的一部分 它确实 sh python3 m venv venv sh source venv bin activate withCredentials username
  • OpenCv 与 Android studio 1.3+ 使用新的 gradle - 未定义的参考

    我在使用原生 OpenCv 2 4 11 3 0 0 也可以 和 Android Studio 1 3 以及新的 ndk 支持时遇到问题 所有关于 mk 文件的教程 但我想将它与新的实验性 gradle 一起使用 使用 Kiran 答案An
  • 在mysql中的单个查询中更新多个表

    我有三个查询 我想要一个 这是我的查询 UPDATE tab1 SET a WHERE id 3 UPDATE tab2 SET b WHERE id 9 UPDATE tab3 SET c WHERE id 5 您可以尝试下面的代码 UP
  • 使用jquery和javascript水平滑动div

    我正在尝试在 关于我们 页面中显示我的推荐 我在那里用 3divs水平样式可同时显示 3 个推荐 这里我想做的是我想添加一些滑动效果与查询消失 1st 3divs然后需要加载2nd 3divs与不同的推荐 等等 我做了HTML和CSS 但不
  • 包含 ASP.Net Identity 2.0 UserManager.Users.ToListAsync 和 UserManager.FindByIdAsync 上的属性

    我正在尝试实现 Asp Net Identity 2 0 到目前为止 在以下人员的帮助下我做得很好这个博客 http typecastexception com post 2014 06 22 ASPNET Identity 20 Cust
  • 动态字节码检测失败且没有任何错误

    客观的 我正在使用 JVMTI 代理进行动态字节码检测 我必须检测那些 热 的方法 即调用 JIT 编译器的方法 为此 我听了一个CompiledLoadEvent并在其回调函数内调用RetransformClasses 这反过来又调用Cl
  • 删除地图函数中的重复项[重复]

    这个问题在这里已经有答案了 我正在尝试删除数组中的重复项 我有来自帖子的标签 这也是数组 tags react javascript node 从地图函数我得到这样的输出 node react javascript react javasc
  • 如何修复 facebook Fatal error: Uncaught CurlException 问题

    我不时从 Facebook 收到此错误 Fatal error Uncaught CurlException 28 connect timed out thrown in var www html xxx facebook src face
  • 客户端发送的请求语法错误。-Spring MVC + JDBC 模板

    我是 Spring MVC 的新手 我在运行项目时遇到错误错误 客户端发送的请求在语法上不正确 我有一个实体类 PatientInfo 我的jsp页面是demo1 我的控制器是患者控制器 我想要实现的功能是将值插入数据库 但我无法在控制器中
  • 连接红黑树

    OCaml 标准库有一个很棒的Set使用非常有效的分而治之算法来计算的实现union两套 我相信它会从一组中获取整个子树 而不仅仅是单个元素 并将它们插入到另一组中 并在必要时重新平衡 我想知道这是否需要 OCaml 使用的 AVL 树中保
  • Python:有类似matlab的反斜杠运算符吗?

    Matlab 和 Julia 有反斜杠运算符来求解线性系统 我真的不知道 Matlab 是做什么的 但是 Julia 不计算逆函数 但它计算逆函数对给定向量的影响 这在计算上更容易 我有一个 numpy 稀疏矩阵 我想将其伪逆应用于向量 P
  • 如何使用actionbarsherlock创建自定义下拉菜单?

    所以 我试图模仿潘多拉的菜单之类的东西 如果您可以选择点击右上角的菜单按钮或图标 无论哪种方式 它都会显示相同的下拉菜单列表 我尝试过创建 溢出 菜单 但在较旧的设备上 我发现该菜单仍然出现在底部 我不想要 所以我创建了一个Spinner并
  • 如何检查 ini_set() 是否在全局 PHP.INI 或我的 PHP 脚本中启用?

    我有一个应用程序安装失败 供应商说我可能禁用了 ini set 我怎样才能检查这个 我对此做了一些研究 结果发现有时 ini set 不会返回 FALSE 而是一个空字符串 gabriel1836 指出的 URL 中提到了这一点 检查它是否
  • 如何在initialize()中使用define_method

    尝试使用define method inside initialize但得到未定义的方法define method 我究竟做错了什么 class C def initialize n define method n puts some me
  • Fluent Nhibernate 如何在 SubclassMap 中指定 Id()

    我正在使 Fluent NHibernate 适应我们现有的遗留应用程序 并尝试确定如何将 ClassMap 和 SubclassMap 用于所示的实体层次结构 BaseObject contains database columns co