Fluent NHibernate Composite ID表问题

2023-12-12

我对 nhibernate 有点陌生,遇到了一个问题。 我有以下表格:

Table 1:


我在使用复合 id 做事时遇到了很多问题,例如this。我建议做我所做的事情,即创建一个新类型,它只包含复合 id 用于 id 的内容,然后像这样映射它:

CompositeId<UserToDoId>(x => x.ID)
    .KeyReference(x => x.UserIdPart, c_userID)
    .KeyReference(x => x.AchievementIdPart, c_missionID);

其中 UserToDoId 具有复合 id 中使用的两个引用:

public class UserToDoId
{
    User UserIdPart { get; set; }
    Achievement AchievementIdPart { get; set; }

    public override bool Equals(object obj)
    {
        return Equals(obj as UserToDoId);
    }

    private bool Equals(UserToDoId other)
    {
        if (ReferenceEquals(other, null)) return false;
        if (ReferenceEquals(other, this)) return true;

        return UserIdPart.ID == other.UserIdPart.ID &&
            MissionIdPart.ID == other.MissionIdPart.ID;
    }

    public override int GetHashCode()
    {
        unchecked
        {
            int hash = GetType().GetHashCode();
            hash = (hash * 31) ^ UserIdPart.ID.GetHashCode();
            hash = (hash * 31) ^ MissionIdPart.ID.GetHashCode();

            return hash;
        }
    }
}

我不知道为什么,但是当您不使用另一种类型来保存组件 ID 的各个部分时,会出现一堆小问题。

我遇到的一个问题在我的答案一开始就链接到了。我的另一个做法是使用具有子类映射的父抽象类的复合 id 来尝试为某些查询创建抽象类的实例(您不能这样做)。实现这种新类型解决了这两个问题。

尝试一下,看看是否有效。另外,“achievment”被拼写为“achievement”(不是试图嘲笑,我只是希望您能避免人们因为拼写错误而嘲笑您的代码:-D)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Fluent NHibernate Composite ID表问题 的相关文章

随机推荐

  • 从 C++ 回调到 C#

    假设我有一个用于计算 PI 的 C 库函数 pi h ifdef BUILDING DLL define DLL MACRO declspec dllexport else define DLL MACRO declspec dllimpo
  • 当后端表单验证失败时,如何在 jQuery 对话框中重新打开 Django 表单?

    我有一个 Django 表单 在用户单击网页上的链接后 我将其动态加载到 jQuery 对话框中 链接中的 href 指向仅包含表单内容的 Django 页面 而不包含整个站点布局 add note click function dialo
  • 我怎样才能用 CSS 使这个菜单居中

    我已修复此菜单 如何才能使此菜单居中 我已经尝试使用 margin 0 auto 和 float left 但它不起作用 有办法居中吗 这里我有一个演示 http jsbin com enaliw 3 edit
  • Angular:URL 更改不会第一次重新加载页面

    我知道这是一个糟糕的问题 我没有代码 但我希望有人能对此有所启发 我有一个 Angular 网站 该网站加载不同产品的销售数据 产品名称显示在 URL 中 该网站从网站中到不同产品的链接运行良好 如果我直接使用产品名称更新 URL 并按 E
  • 错误 1 ​​运算符“*”不能应用于“方法组”和“双精度”类型的操作数

    我相信我想做的事情非常简单 但我收到了错误 运算符 不能应用于 method group 和 double 类型的操作数 如果选中该复选框 我想将 dayrental 中存储的天数乘以 19 95 我收到错误消息说我不能 因为日租是一种方法
  • MongoDB:如何为集合中的每个文档设置一个新字段等于另一个字段的值[重复]

    这个问题在这里已经有答案了 我需要运行迁移脚本以将值 每个文档中已有的值 插入到同一文档的数组中 必须对我收藏的每个文档执行此操作 不需要选择查询 如何改变这个 id ObjectID 5649a7f1184ebc59094bd8b3 al
  • DirectShow - IAMStreamConfig::SetFormat 和 ICaptureGraphBuilder2::RenderStream 的调用顺序会在某些摄像机中产生问题

    在捕获和处理数据之前 我必须配置摄像机的显示分辨率 最初我是按如下方式进行的 创建了所有必要的接口 添加了相机和渲染器滤镜 RenderStream 是否具有捕获和预览 PIN 类别 然后循环遍历 AM MEDIA TYPE 结构并设置参数
  • 将字节字符串列表转换为字节数组(字节流)

    我有一个表示字节的十六进制字符串列表 其形式为 FF 我想将整个列表转换为字节流 以便我可以通过套接字 Python 3 发送它 看起来字节数组类型可以工作 但我找不到任何方法可以直接将列表转换为字节数组 我可以在循环中手动执行此操作 但我
  • Bash 搜索文件中的模式,将模式替换为包含 Git 分支名称的代码

    我有一个 README md 文件 我想在其中替换文本标识符 CODESHIP CODE 带有一行代码 特别是包含 git 分支名称的构建状态图像代码片段 我想它看起来会是这样的 放置当前分支git rev parse abbrev ref
  • 单击 css 内容属性

    以下代码在标题标记之前添加图像 单击标题之前添加的图像时 如何添加 javascript 或 jquery 代码来处理某些任务 h1 before content url smiley gif Html 代码是 h1 Hi h1 您不能将事
  • 验证两个属性相等

    是否可以验证类型的两个对象属性string是平等的使用Joi I found Joi ref 但我想知道是否还有其他方法可以做到这一点 尤其是作为Joi ref 似乎不支持any error 是的 可以检查对象的两个属性是否相同 并使用Jo
  • C# 调暗屏幕、多个 Windows 窗体的最佳方法?

    因此 我编写了代码来从父级创建一个新的 Windows 窗体 该窗体为全屏 黑色且不透明度为 80 以创建变暗效果 然后上面会显示另一个表格以显示进度 代码目前如下所示 this Enabled false frmDimScreen Bac
  • 如何制作一个脚本在我的默认 sqlite3 数据库 django 中插入数据

    我已经在 Django 中定义了我的模型和所有内容 如果用户通过我的应用程序注册 则用户可以在数据库中注册 问题是我有一个包含大量用户的 JSON 文件 我想做一项工作 允许我读取此文件并将所有用户插入我的数据库中 最好的方法是什么 如何在
  • 无法找到管道“ ” Angular2 自定义管道

    我似乎无法修复这个错误 我有一个搜索栏和一个 ngFor 我正在尝试使用这样的自定义管道来过滤数组 import Pipe PipeTransform from angular core import User from user user
  • Java:运行JAR文件时如何获取文件的路径

    当我使用相对路径时 我可以从 Eclipse 运行我的 Java 程序 但是当我将它作为 JAR 文件运行时 该路径不再起作用 在我的 src components SettingsWindow java 中 我有 ObjectInputS
  • 如何在 pyqt 中使用 Qtableview /QAbstractTableModel 存储和检索自定义数据(使用 QtCore.Qt.UserRole?)?

    我对模型 视图框架的使用还很陌生 并且遇到了一些麻烦 我在小部件上使用 Qtableview 和 QAbstractTableModel 我试图使用 QAbstractTableModel 中的 data 方法在 QModelIndex 中
  • 实数、浮点数、货币

    为什么当我在 SQL Server 中将 40 54 的值保存到 Real 类型的列时 它返回给我的值更像是 40 53999878999 而不是 40 54 我已经见过几次这种情况 但一直不明白为什么会发生这种情况 有其他人遇到过这个问题
  • OpenCV。匹配时绘制矩形

    我使用 OpenCv 来查找与参考图像上的模板匹配的区域 当代码找到与模板匹配的区域时 在该区域周围绘制一个矩形 但我想要的是当代码找不到该区域时 代码不会绘制任何矩形 code IplImage res CvPoint minloc ma
  • R-markdown 自包含

    我正在使用 R markdown 来编写一些报告 我用独立的图形来做 因为我通过电子邮件发送它 这一直有效直到最近 但现在图像不再显示 方框中出现十字错误 可能是我更新了RStudio的版本 我在脚本的顶部使用了这个 title blabl
  • Fluent NHibernate Composite ID表问题

    我对 nhibernate 有点陌生 遇到了一个问题 我有以下表格 Table 1 我在使用复合 id 做事时遇到了很多问题 例如this 我建议做我所做的事情 即创建一个新类型 它只包含复合 id 用于 id 的内容 然后像这样映射它 C