NHibernate:获取引用的抽象实体的具体类型

2024-06-21

我有以下课程:

public abstract class FooBase 
{
     public virtual Guid Id { get; set; }
}

public class FooTypeA : FooBase
{
     public virtual string TypeAStuff { get; set; }
}

public class Bar
{
     public virtual Guid Id { get; set; }
     public virtual FooBase Foo { get; }
}

FooBase 和 FooTypeA 使用每类表层次结构模式进行映射。 Bar 的映射如下:

public class BarDbMap : ClassMap<Bar>
{
     public BarDbMap()
     {
          Id(x => x.Id);
          References(x => x.Foo)
               .LazyLoad();
     }
}

因此,当我加载 Bar 时,它的 Foo 属性只是一个代理。

如何获取 Foo 的子类类型(即 FooTypeA)?

我读过很多 NH 文档和论坛帖子。他们描述了获取父类型而不是子类的方法。

如果我尝试unproxy https://stackoverflow.com/questions/2664245/identifying-nhibernate-proxy-classes在课堂上,我收到如下错误:对象是 FooBase 的未初始化代理


我想出了如何避免收到的异常。下面是取消 FooBase 代理的方法:

    public static T Unproxy<T>(this T obj, ISession session)
    {
        if (!NHibernateUtil.IsInitialized(obj))
        {
            NHibernateUtil.Initialize(obj);
        }

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

NHibernate:获取引用的抽象实体的具体类型 的相关文章

  • 通过 NHibernate 进行查询,无需 N+1 - 包含示例

    我有一个 N 1 问题 我不知道如何解决它 可以在这个问题的底部找到完全可重复的样本 因此 如果您愿意 请创建数据库 设置 NUnit 测试和所有附带的类 并尝试在本地消除 N 1 这是我遇到的真实问题的匿名版本 众所周知 这段代码对于帮助
  • 流畅的 Nhibernate AutoMapping 继承和忽略抽象属性

    我有一个已成功映射的继承结构 产品 基础 PdfProduct 继承自Product 和OtherProduct 继承自Product 这些工作正常 我之前用 hbm xml 文件做过类似的事情 在上一个项目中 当我试图找出产品是什么类型时
  • 如何在 NHibernate 查询中仅选择几列?

    我有一个一类到一表的映射 不幸的是 这个表有 110 多个列 查询需要很长时间 尤其是大多数时候我只想查看 我的问题是查询是根据用户想要查看的内容动态生成的 我无法真正使用不同的列创建不同的映射 因为会有大量的组合 我正在使用条件 API
  • NHibernate HQL 相当于 T-SQL 的 TOP 关键字

    NHibernate HQL 相当于 T SQL 的 TOP 关键字是什么 另外 用非 HQL 方式说 给我一门课的前 15 个 是什么意思 在 HQL 中这实际上非常简单 var top15 session CreateQuery fro
  • NHibernate 按 id 逐出

    大家都知道session中有缓存 这个缓存一般可以通过2种方法来清除 会话 驱逐 会话 清除 第二种方法不仅删除单个条目的所有缓存 我有商业方法 它接收大对象的 id 来自 aspx 站点 或有时接收多个 id 并在数据库中进行原生sql操
  • NHibernate:如何从会话缓存中获取实体实例?

    我在工作单元开始时开始会话 并在工作单元结束时关闭 工作单元分布在多种方法中 在一种方法中 我使用加载实体Get方法 所以它位于会话缓存中 实体实例对于方法来说是本地的 因此 当方法范围结束时 实体实例将无法访问 但实体仍在会话缓存中 现在
  • 在 nhibernate 标准中使用内置的 sql“转换”函数

    我想利用 SQL Server 2008 中的 Convert 函数 以便可以在 DateTime 列上进行搜索 建议的 SQL 看起来像这样 SELECT list of fields FROM aTable WHERE CONVERT
  • 在nhibernate中设置聚集索引

    我试图在 nhibernate 中定义一个不是 id 的属性作为聚集索引 但我发现没有办法做到这一点 谁能给我指点一下这是如何完成的 或者它是当前在 nhibernate 中不可用的东西 提前致谢 您可以使用
  • 流畅的NHibernate并在需要多个连接的查询上过滤一对多关系?

    我最近开始使用 NHibernate 但在实现下面概述的域模型时遇到了一些问题 我正在寻找一种方法来过滤项目与其特定数据存储上的项目数据集合之间的关系 数据存储要么是全局的 在这种情况下它们总是被返回 要么是特定于用户身份的 基于应用程序实
  • MSTest 和 NHibernate

    有谁有让 MSTest 将 hibernate cfg xml 正确复制到输出目录的经验吗 我的所有 MSTest 都因找不到 hibernate cfg xml 错误而失败 我将其设置为 始终复制 但我的 MBUnit 测试通过了 您可以
  • NHibernate Session.Evict()

    我无法访问我面前的代码 所以我只是想知道是否有人可以帮助我解决 Session Evict 问题 假设我有一个包含地址子集合的 Person 对象 我从会话中填充 Person 对象并延迟加载 Addresses 集合 然后 我调用 Ses
  • linq查询的问题

    我正在尝试使用 linq to NHibernate 使用 Fluent NHibernate 但我在 linq 查询方面遇到问题 每次我尝试执行它时 我都会收到以下消息 方法 get IsReadOnlyInitialized 类型 NH
  • NHibernate双向一对一映射问题

    当尝试在 NHibernate 中创建双向一对一映射时 我发现我无法递归地获得对象的引用 例如 假设我之间有一对一的关系Person and Address 然后执行以下代码后 class Person public Address Add
  • ASP.NET MVC 应用程序中的工作单元模式

    我一直在看这个优秀的blog http www nhforge org wikis patternsandpractices nhibernate and the unit of work pattern aspx标题为 NHibernat
  • 在 nHibernate 关系中使用实体的 Lite 版本?

    在某些情况下 出于性能原因 创建一个实体的轻量级版本 指向同一个表 但映射的列较少 这是一个好主意吗 例如 如果我有一个包含 50 列的联系人表 并且在一些相关实体中 我可能对 FirstName 和 LastName 属性感兴趣 那么创建
  • 一对一映射不适用于二级缓存

    我已经声明了 Hibernate 3 的以下映射 使用 FluentNHibernate public class ActivityMap ClassMap
  • 配置 NHibernate hibernate.cfg.xml 文件以拥有更多连接字符串

    我的客户询问是否可以从 C 应用程序的 CURRENT 数据库切换到 TEST 数据库或 DEV 数据库 一次只能有一个人处于活动状态 在菜单文件中 她选择 DEV 或 TEST 数据库 如何配置 hibernate cfg xml 文件以
  • NHibernate:多对一和惰性

    关于 NHibernate 1 2 webapp C aspnet 3 5 和延迟加载 我不明白 也找不到一些明确的答案 多对一是否支持延迟加载 假设我们有一些Person对象和一个Squeletton目的 这两个对象都很大 具有很多属性
  • 在 NHibernate 中标准化 EnumStringType

    我目前正在 NHibernate 中使用枚举 映射如下 public enum UploadMethod Java Silverlight Gears Flash class UploadMethodType EnumStringType
  • 延迟加载属于主记录一部分的字段

    我是 NHibernate 的新手 所以如果这是一个愚蠢的问题 我会提前请求原谅 我已经用谷歌搜索了它并搜索了文档 并且正在围绕轴进行所有操作 我正在维护 增强一个现有应用程序 该应用程序使用 NHibernate 作为相对简单的表 该表大

随机推荐

  • 如何从谷歌云存储桶读取音频文件并在datalab笔记本中使用ipd播放

    我想在数据实验室笔记本中播放我从谷歌云存储桶中读取的声音文件 这个怎么做 import numpy as np import IPython display as ipd import librosa import soundfile as
  • 在一个 Linq to Entities 查询中多次实现“like”运算符

    我们有一个字符串列表 我们需要通过该列表过滤结果 示例将查找所有 SSN 以 465 496 或 497 加上 x 更多 开头的学生 List
  • 使用startActivityForResult,如何获取子活动中的requestCode?

    我有四项活动 即 A B C 和 D 我的情况是A将通过startActivityForResult启动活动B startActivityForResult new Intent this B class ONE 在另一种情况下 我将使用不
  • 如何在JUnit测试中将MockWebServer端口设置为WebClient?

    我在用着spring boot with WebClient 它被自动装配为一个 bean 问题 写一个junit集成测试 我必须使用okhttpMockWebServer 该模拟始终在随机端口上启动 例如localhost 14321 N
  • html 解析器 python

    我正在尝试解析一个网站 我正在使用 HTMLParser 模块 问题是我想解析第一个 a href 评论后 但我真的不知道该怎么做 所以我在文档中发现有一个函数叫做handle comment 但我还没有找到如何正确使用它 我有以下内容 i
  • JPA 为每个项目选择最新实例

    假设我有一个会议实体 每次会议都有一个与会者和一个会议日期 在我的会议表中 我可能为每个与会者举行多个会议 每个会议都有不同的日期 我需要一个 JPA 查询 该查询将为所有与会者仅选择最新的会议 例如 如果我的桌子看起来像这样 Meetin
  • 对基本适配器类及其功能的疑问

    我正在尝试自定义列表视图 我使用数组列表添加对象列表 并将其发送到扩展基本适配器的类 当我扩展基本适配器类时 它实现了一些方法 例如 getView 等 在 getView 中 我将其发送到将名称 数据 分配给 XML 格式的自定义菜单的类
  • TF400856:以下服务未在数据库中注册:IdentityManagement

    我正在运行本地 TFS 2018 Update2 并且我正在尝试在线迁移到 TFS 我现在需要为我的收藏制作一个 dacpac 为了做到这一点 我需要像这里概述的那样分离我的收藏 https learn microsoft com en u
  • bison/lex YYSTYPE 声明为结构体

    我已经尝试了一段时间 通过使用 bison 和 lex 来实现语法解析器 我对 yylval 的类型重新声明有疑问 我自己解释一下 我有4个文件 lexico l parser y funcionesTabla c funcionesTab
  • 在 XCode 中本地化 HTML 文件

    我有一个本地化的 iOS 应用程序 我希望在其中包含一些本地化的 HTML 文件 我不知道该怎么做 目前 我的文件夹结构如下所示 myapp en lrproj Localizable strings fr lrproj Localizab
  • NoClassDefFoundError:com.google.firebase.FirebaseOptions

    我继续得到NoClassDefFoundError在我正在使用的其他测试设备 4 4 2 上 但在我的测试设备 Android 5 1 上运行良好 我尝试了用谷歌搜索的解决方案 但似乎没有任何效果 我正在使用 Firebase 实时数据库
  • 为什么将数据存储为元素的属性存在风险?

    我一直在读同样的东西 直接在 DOM 元素上存储属性值是有风险的 因为可能会发生内存泄漏 但有人可以更详细地解释这些风险吗 按属性 我假设您指的是 DOM 元素上的属性 DOM 元素上的自定义属性安全吗
  • JQuery 动画文本

    找到简单 简单的动画文本是非常困难的 喜欢这个网站上的 内爆 http codecanyon net item jquery text animation full screen preview 233445 http codecanyon
  • 如何在 ReportLab 段落中插入回车符?

    有没有办法在 ReportLab 的段落中插入回车符 我试图将 n 连接到我的段落字符串 但这不起作用 Title Paragraph Title n Page myStyle 我想要这样做 因为我将名称放入单元格中 并且想要控制单元格中的
  • 父>子CSS选择器

    我经常使用这个CSS选择器parent gt child 我的设计在 Mozilla 和 Opera 中看起来不错 但在 IE 中 就很糟糕了 我知道 gt 在 IE 中无法识别 但是 IE 中的替代方案是什么 一种替代方法是使用通用选择器
  • 如何在使用 F# FsYacc 解析期间添加和使用自定义上下文参数?

    我在用着FsLex and FsYacc用于 F 应用程序中的字符串解析 在抽象语法树 AST 创建期间 解析器必须决定如何创建 AST 创建不同的树 抛出异常等 解析器的行为必须取决于几个参数 Here http fsharppowerp
  • webpack3 jshint-loader 不起作用

    我正在尝试遵循此说明https webpack js org loaders jshint loader https webpack js org loaders jshint loader 并得到一个错误 我的配置文件 const pat
  • Xcode 在我的 iPhone 应用程序上运行 codesign 后如何运行脚本?

    我编写了一个脚本 它执行一些步骤来将我的构建打包为临时发行版 我的第一个猜测是在我的 Ad Hoc 目标中使用运行脚本阶段 但看起来协同设计被固定在构建 iPhone 应用程序链的最后位置 有人知道如何在构建过程的最后一刻运行我的脚本 Up
  • 即使通过引用传递,也被调用而不是派生的基类方法[重复]

    这个问题在这里已经有答案了 我有3节课 A B and AnotherClass Where B源自A class A public A virtual void method default action 然后我有一个派生类 B clas
  • NHibernate:获取引用的抽象实体的具体类型

    我有以下课程 public abstract class FooBase public virtual Guid Id get set public class FooTypeA FooBase public virtual string