首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在NHibernate中将多个鉴别器值映射到单个默认类

在NHibernate中,可以使用多个鉴别器值映射到单个默认类的方式来实现对象的多态性。这种技术被称为"多鉴别器映射"。

多鉴别器映射是指在一个继承体系中,使用多个属性或列来确定对象的类型。在NHibernate中,可以通过配置映射文件或使用属性注解来实现多鉴别器映射。

具体实现方式如下:

  1. 定义父类和子类:首先,需要定义一个父类和多个子类,父类是默认类,子类是根据不同的鉴别器值来确定的具体类。
  2. 配置鉴别器列:在父类的映射文件或注解中,使用<discriminator>元素或@DiscriminatorColumn注解来配置鉴别器列。鉴别器列可以是一个或多个数据库列,用于存储不同的鉴别器值。
  3. 配置鉴别器值:在每个子类的映射文件或注解中,使用<subclass>元素或@DiscriminatorValue注解来配置鉴别器值。鉴别器值是一个字符串或整数,用于标识该子类对应的鉴别器值。
  4. 配置默认类:在父类的映射文件或注解中,使用<subclass>元素或@DiscriminatorValue注解来配置默认类。默认类是当鉴别器值不匹配任何子类时使用的类。

多鉴别器映射的优势在于可以将多个不同类型的对象映射到同一个表中,提高了数据库的灵活性和可扩展性。它适用于需要处理多态对象的场景,例如一个订单系统中的不同类型的订单。

在腾讯云的产品中,与NHibernate相关的产品是云数据库 TencentDB,它提供了高性能、可扩展的数据库服务,可以满足各种应用场景的需求。您可以通过以下链接了解更多关于腾讯云数据库的信息:腾讯云数据库产品介绍

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Python在生物信息学中的应用:字典中将键映射到多个

我们想要一个能将键(key)映射到多个的字典(即所谓的一键多值字典[multidict])。 解决方案 字典是一种关联容器,每个键都映射到一个单独的上。...如果想让键映射到多个,需要将这多个保存到另一个容器(列表、集合、字典等)中。...defaultdict 的一个特征是它会自动初始化每个 key 刚开始对应的,只需要关注添加元素即可。...如果你并不需要这样的特性,你可以一个普通的字典上使用 setdefault() 方法来代替。...因为每次调用都得创建一个新的初始的实例(例子程序中的空列表 [] )。 讨论 一般来说,构建一个多值映射字典是很容易的。但是如果试着自己对第一个做初始化操作,就会变得很杂乱。

14010

NHibernate学习笔记之一,Hello world!

NHibernate是一个面向.NET环境的对象/关系数据库映射框架,主要应用在数据持久层,和其它的ORM框架一样用来把对象模型表示的对象映射到基于SQL的关系模型数据结构中去。...3、编写实体(POCO,Plain Old CLR Objects),映射文件包含POCO射到一个或者多个数据库表的元数据信息。User.cs文件如下所示。...,该文件必须输出到Bin目录中,否则会报错“xxx is not mapped”,如图3所示具体方法是:选择User.hbm.xml文件->属性->生成操作,设置这个属性的为“嵌入的资源” 图3 5...、定义NHibernateHelper的帮助,Isession是NHibernate的工作单元,它是一个持久化管理器,我们通过ISession来从数据库中存取数据。...            finally             {                 session.Close();             }         }     } } 7、表示层使用

59520
  • C# 数据操作系列 - 11 NHibernate 配置和结构介绍

    是一个提供ISession的工厂,同时也是一个 IConnectionProvider的客户端。可以设置一个事务之间的进程级或集群级的二级缓存。...一个ISession可能会开启多个事务,Transaction scopes may be used instead(原话是这个,大意是可以改用事务作用域)。...dialect 数据库方言,表示NHibernate连接的数据库是什么,该用哪种格式解析关系映射到数据库SQL语句 default_schema 默认的schema,用来设置连接字符串连接的数据库默认的...hbm2ddl.auto 该表示每次ISessionFactory创建的时候,是否自动生成DDL语句并提交数据库执行。默认是空,表示不会强制更新数据库。...有几个候选:create或create-drop、update等。

    1.2K20

    Nhibernate_nhibernate与ef区别

    Assembly名)映射到数据库中的user表(这里和hibernate有些不同,我们必须告诉NH这个从哪儿来的.这个差异是由.Net和Java Reflect机制的不同引起的-zyyang).这种情况下...name"属性就是我们写的.Net中的属性,column属性就是在数据库中与'Net类属性对应的字段名.type属性是可选的(如果你没有标明,NH会给出一个最适合的),但是推荐的做法是带上这个属性....hibernate用户会注意到,type属性里,我们给出了长度,这是因为ADO.NET需要这样做....代码里面使用NHibernate是很简单的事情: 1. 创建一个Configuration对象. 2....Configuration对象知道所有.Net和后端数据库之间的映射关系, Configuration cfg = new Configuration(); cfg.AddAssembly("NHibernate.Demo.QuickStart

    58730

    Nhibernate_juan benet

    Assembly名)映射到数据库中的user表(这里和hibernate有些不同,我们必须告诉NH这个从哪儿来的.这个差异是由.Net和Java Reflect机制的不同引起的-zyyang).这种情况下...让我们暂时跳过”id” tag,先说property节点.”name”属性就是我们写的.Net中的属性,column属性就是在数据库中与’Net类属性对应的字段名.type属性是可选的(如果你没有标明...,NH会给出一个最适合的),但是推荐的做法是带上这个属性.hibernate用户会注意到,type属性里,我们给出了长度,这是因为ADO.NET需要这样做....代码里面使用NHibernate是很简单的事情: 1. 创建一个Configuration对象. 2....Configuration对象知道所有.Net和后端数据库之间的映射关系, Configuration cfg = new Configuration(); cfg.AddAssembly(“NHibernate.Demo.QuickStart

    37250

    NHibernate 缓存

    一级缓存 一级缓存就是 ISession 缓存, ISession 的生命周期内可用, 多个 ISession 之间不能共享缓存的对象, 通过 ISessionFactory 创建的 ISession..." usage="read-only" include="all"/> 这一句表示对实体 HibernateTest.Models.Category 启用二级缓存, 实际项目中, 可以根据需要对多个实体启用二级缓存...也可以实体的 hbm 映射文件中配置使用二级缓存, 不过 hibernate.cfg.xml 文件中统一配置是推荐的做法。...|nonstrict-read-write|transactional"/> region:可选,默认或集合的名称,用来指定二级缓存的区域名,对应于缓存实现的一个命名缓存区域。...include:可选,默认为all,当取non-lazy时设置延迟加载的持久化实例的属性不被缓存。 usage:声明缓存同步策略,就是上面说明的四种缓存策略。

    59911

    NHibernate详解

    什么是NHibernateNHibernate 是一个基于.Net 的针对关系型数据库的对象持久化库。...我们将使用如下的一张User表(假定你已经设置好一个数据库—的例子里我称它为NHibernate)。...第三步:写映射文件 现在我们有数据表和需要去映射它的.Net。我们需要一种方式去让NHibernate知道如何从一个映射到另一个。这个任务依赖于映射文件来完成。...简要看一下,你将发现NHibernate所要做的工作。name属性的正是我们.Net 的属性,column属性将是我们数据库里的字段。...那里有一堆属性你需要调整来确定如何让NHibernate来访问数据库。再次说明,你可以文档里获取更多信息。 NHibernate使用log4net来记录内部发生的一切。

    67130

    MyBatis-2. Mapper XML文件

    这就使得获取嵌套的结果集的时候不至于导致内存不够用。默认:false。...timeout 这个设置是抛出异常之前,驱动程序等待数据库返回请求结果的秒数。默认为 unset(依赖驱动)。...typeHandler 我们在前面讨论过的默认类型处理器。使用这个属性,你可以覆盖默认的类型处理器。这个属性是一个类型处理 器实现的完全限定名,或者是类型别名。...构造方法(Constructor) constructor 元素可以使构造方法注入允许你初始化时为设置属性的,而不用暴露出公有方法。...注意它对外部结果集无影响,所以select or resultMap属性中这个是毫无意义的。 默认:未设置(unset)。

    2.7K30

    SqlAlchemy 2.0 中文文档(九)

    层次结构中查询特定子类将呈现为针对基表的 SELECT 查询,其中将包括一个 WHERE 子句,该子句限制行为具有鉴别器列或表达式中存在的特定的行。...在上面的示例中,每个代表Employee的行在其type列中将'employee';同样,每个Engineer将获得'engineer',每个Manager将获得'manager'。...层次结构中查询特定子类将呈现为针对基表的 SELECT,其中将包括一个 WHERE 子句,该子句将限制行为具有鉴别器列或表达式中存在的特定。...Mapper.polymorphic_abstract可以应用于层次结构中的任何,包括同时多个级别上应用。...Mapper.polymorphic_abstract可以应用于层次结构中的任何,包括一次多个级别上。

    21410

    NHibernate介绍「建议收藏」

    NHibernate是一个面向.NET环境的对象/关系数据库映射工具。 1. 创建项目文件 Visual Studio开发工具里创建需要的项目结构。 2....NHibernate.dll(基础库,与数据库直接打交道,位于数据访问层) Iesi.Collections(基础库辅助库,位于数据访问层) Antlr3.Runtime(基础库辅助库,位于数据访问层...相比较而言,有些ORM解决方案需要特殊属性,或者是基于模型对象,这些对象又是从特定的基中继承而来的。 NHibernate中不用特殊的修饰就可以让对象和持久化层交互。...创建NHibernate映射文件 Nhibernate使用XML映射文件来映射POCO到数据库对象。虽然很多案例中这可能是一对一关系,但这并不是必定的。...class元素表示到单个POCO的映射。name表示上面的程序集和命名空间中的名,table属性告诉NHibernate数据库中的哪个表或者视图将被映射。

    67720

    NHibernate 缓存

    一级缓存 一级缓存就是 ISession 缓存, ISession 的生命周期内可用, 多个 ISession 之间不能共享缓存的对象, 通过 ISessionFactory 创建的 ISession..." usage="read-only" include="all"/> 这一句表示对实体 HibernateTest.Models.Category 启用二级缓存, 实际项目中, 可以根据需要对多个实体启用二级缓存...也可以实体的 hbm 映射文件中配置使用二级缓存, 不过 hibernate.cfg.xml 文件中统一配置是推荐的做法。...|nonstrict-read-write|transactional"/> region:可选,默认或集合的名称,用来指定二级缓存的区域名,对应于缓存实现的一个命名缓存区域。...include:可选,默认为all,当取non-lazy时设置延迟加载的持久化实例的属性不被缓存。 usage:声明缓存同步策略,就是上面说明的四种缓存策略。

    44110

    学界 | 要让GAN生成想要的样本,可控生成对抗网络可能会成为你的好帮手

    CGAN控制生成样本上有很强的表现,同时,它还能控制发生器专注于单个目标(生成真实的图像或产生不同的图像)。文章最后使用CelebA的数据库对CGAN进行评估。...CGAN由三个部分构成,发生器/解码器,鉴别器和分类器/编码器。CGAN中,发生器和鉴别器、分类器同时工作;发生器旨在欺骗鉴别器并同时需要被分类器正确的进行分类。...CGAN对如下的方程进行最小化: l 是样本x的二进制表示,并且是发生器的输入数据,同时还作为鉴别器和分类器的参数。 CGAN强制将特征映射到相应输入发生器的l。...类似的,最后一组图片是由z和多个标签生成的。 CGAN还具有另一优势:相较于条件GAN,CGAN可以生成label-focused样本。通过选择γ的低,可以讲发生器更多的专注于输入标签。...CGAN包含三个模块,发生器/解码器,鉴别器和分类器/编码器。通过将相应的特征映射到输入标签上,生成的样本可以被有效地控制。

    1.8K100

    Fluent Nhibernate之旅(五)--利用AutoMapping进行简单开发

    Fluent Nhibernate(以下简称FN)发展到如今,已经相当成熟了,Nhibernate的书中也相应的推荐了使用FN来进行映射配置,之前写的FN之旅至今还有很多人会来私信我问题,说来惭愧,从...NuGet下载FluentNhibernate后,会自动下载安装Nhibernate及Iesi。...刚我们的测试报错,是因为Employee中的Name是个UserNameNhibernate的Component,我FN之旅四(上)中有介绍到,默认情况下映射根据字段映射到数据库的,所以上面的测试会报错...Fluent Nhibernate确实是个好东西,让我开发上省去了很多时间,今天虽然介绍了AutoMapping,但我不推荐您在您的项目中使用,用起来没手感(个人感觉),需要约定的东西太多了,对于数据库结构也得按照他的契约来...,否则就得自己重写一些方法,实现一些,有点累人。

    96260

    模块化、反事实推理、特征分离,「因果表示学习」的最新研究都在讲什么?

    第三阶段,单个激活 RIM 按照默认转换动态运行,而非激活 RIM 保持不变。第四阶段,使用注意力机制 RIMs 之间进行稀疏通信。...请注意,键中的维度可以拆分为多个头(heads),然后分别计算它们的注意力矩阵和写入。...W_v 是从一个从输入元素到相应的加权注意向量的映射矩阵,W_k 为权重矩阵,它将输入映射到键。W_k.^q 是从 RIM 的每个隐藏状态映射到其查询的权重矩阵。此时注意力机制为: ?...从得到的两个因子矩阵中,得到 K 聚模板模式(通过根据图像维度重塑 H 的每一行得到),以及每一个模式对单个映射( W 中编码)贡献的权重表示。每个影响图都是一个基于模板模式的最大权重聚。...鉴别器 D 执行极小极大博弈。鉴别器 D 一方面通过最小化上式给出正确的治疗;另一方面,向表示学习重新发送结果预测进行训练,使上述损失最大化,过滤掉有利于鉴别器 D 的信息。

    1.3K40

    要让 GAN 生成想要的样本,可控生成对抗网络可能会成为你的好帮手

    CGAN 控制生成样本上有很强的表现,同时,它还能控制发生器专注于单个目标(生成真实的图像或产生不同的图像)。文章最后使用 CelebA 的数据库对 CGAN 进行评估。...CGAN 由三个部分构成,发生器 / 解码器,鉴别器和分类器 / 编码器。 CGAN 中,发生器和鉴别器、分类器同时工作;发生器旨在欺骗鉴别器并同时需要被分类器正确的进行分类。...CGAN 强制将特征映射到相应输入发生器的 l。这个参数决定了发生器专注于样本真实性的程度。...通过选择γ的低,可以讲发生器更多的专注于输入标签。图 4 是 CGAN,γ=5 和条件 GAN 的对比。从图中可以看出 CGAN 生成的人脸图片比条件 GAN 更契合输入标签。...CGAN 包含三个模块,发生器 / 解码器,鉴别器和分类器 / 编码器。通过将相应的特征映射到输入标签上,生成的样本可以被有效地控制。

    2.9K20

    盘点 .NET 比较流行的开源的ORM框架

    2、由实体生成数据库表结构。 3、通过数据库可视化设计器设计数据库,同时生成实体。...开源地址:https://github.com/dotnet/ef6 六、NHibernate(国外) NHibernate 是一个成熟的开源对象关系映射器,适用于 .NET 框架。...开源地址:https://github.com/nhibernate/nhibernate-core 七、ServiceStack/ServiceStack.OrmLite(国外) 简单的 .NET 的快速...架构上,它比 Dapper、Massive 或 PetaPoco 等微 ORM 高出一步,因为您使用 LINQ 表达式而不是魔术字符串,同时代码和数据库之间维护一个薄抽象层。...包括一个低摩擦的 SQL 构建器,使编写内联 SQL变得更加容易。 包括 T4 模板以自动为您生成 POCO 。(V5) 用于记录异常、安装转换器和将列映射到没有属性的属性的挂钩。

    4.1K41

    微软歌声合成算法HIFISINGER论文解读

    sub-frequency GAN 来生成梅尔声谱图,并将80维的mel频率分成多个子带,每个模型都有一个鉴别器。...可以以不同的长度粒度对歌声建模,以避免具有固定长度的波形序列的单个鉴别器中发生的问题(例如,毛刺和振动)。 解决高采样引起的长的波形的问题,multi-length GAN区分不同长度的波形序列。...合成梅尔声谱图加入了音高F0和(声音、静音的标注),选择window and hop size 背景 歌声合成与语音合成:语音合成经历了拼接合成、参数化合成、神经网络合成、端到端语音合成(从文本或者拼音直接映射到语音...ML-gan来建模长波形(时域) 它使用多个鉴别器区分不同长度的采样点。ML-gan降低合成更长波形模型的难度。能更好的抓取动态因素的时长。...Gvoc代表声码器,Dt代表不同时长的鉴别器 其他设计 音高和声音和静音标注:声学模型还可以预测音高,使用乐谱中的原始音符音高作为快捷输入,让模型专注于学习剩余音高

    1.8K00

    C# 数据操作系列 - 12 NHibernate的增删改查

    none,一种默认的级联风格 auto-import:明确是否可以查询中使用非限定名。...,默认情况从Property 中读取 default-lazy:可选的,默认是true,是否启动延迟加载 1.2 class的配置 一般情况下,class节点只需要指定name和table就可以了。...column:对应数据表的列名 type:数据库中的类型 1.2.3 many-to-one Nhibernate中,多对一的配置是一的一端,表示该类有一个外键导航。...增删改查 Nhibernate的每次操作都基于一个Session,所以我们操作数据库的时候最好先持有一个可用的Session。接下来,我们就一个通用数据库操作为基础,向大家分享一下我的想法。...不过本篇内容完结之前,先补充一个NHibernate的SqlDialect选: 数据库 Dialect 备注 DB2 NHibernate.Dialect.DB2Dialect DB2 for iSeries

    1.1K20

    IBC 2023 | 最新人工智能深度学习模型趋势超分辨率视频增强中的技术概述

    深度学习超分辨率方法 虽然单图像超分辨率(SISR)算法的输入和输出都是单个图像,视频超分辨率(VSR)算法必须从多个低分辨率帧输入生成多个高分辨率帧。...虽然第一种情况下,生成器努力产生能够欺骗鉴别器的多样化样本时会陷入局部最小(如果训练数据太有限,以至于生成器无法学习数据的完整分布,这种情况也可能发生),但在第二种情况下,生成器无法产生多样化、高质量的输出...这允许大量高分辨率和低分辨率对的数据集上使用单个负对数似然损失来训练神经网络。...对于所有方法,我们都使用了作者在他们的原始论文中提出的默认架构,以及他们提供的预训练模型。...表 1 的最后一列,我们包括了使用 RTX3080Ti GPU 实现的每种方法的吞吐量。这允许估计每种方法云中的单个 GPU 实例中运行时的相对放大成本。

    30910
    领券