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

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

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

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

具体实现方式如下:

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

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

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

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

相关·内容

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

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

15910

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、在表示层使用

61020
  • 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.3K20

    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

    60230

    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

    38350

    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:声明缓存同步策略,就是上面说明的四种缓存策略。

    60911

    NHibernate详解

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

    70930

    SqlAlchemy 2.0 中文文档(九)

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

    26710

    MyBatis-2. Mapper XML文件

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

    2.7K30

    NHibernate介绍「建议收藏」

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

    76020

    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:声明缓存同步策略,就是上面说明的四种缓存策略。

    44410

    Text to image论文精读GigaGAN: 生成对抗网络仍然是文本生成图像的可行选择

    其次,它可以在3.66秒内合成高分辨率图像,例如1600万像素的图像。最后,GigaGAN支持各种潜在空间编辑应用程序,如潜在插值、样式混合和矢量算术操作。二、为什么提出GigaGAN?...而生成对抗网络只需通过单次向前传递生成图像,相较而言非常高效,其在建模单个或多个对象类方面表现出色,但在扩大规模时会经常遇见模式崩溃,在扩展到复杂的数据集或者更加开放的世界,仍然具有挑战性。...,以将学习到的常数张量映射到输出图像x。...在每个注意块上,我们添加了一个单独的交叉注意机制gcross−attentiongcross−attention​来处理单个词嵌入。我们使用每个输入特征张量作为查询,文本嵌入作为注意机制的键和值。...3.4.2、多尺度图像处理多尺度图像处理中,随着模型大小的增加,鉴别器网络的依赖于高分辨率层,早期低分辨率层变得不活跃。于是作者重新设计了模型架构,以提供跨多个尺度的训练信号。

    14110

    学界 | 要让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是个UserName类,Nhibernate的Component,我在FN之旅四(上)中有介绍到,默认情况下映射根据字段映射到数据库的,所以上面的测试会报错...Fluent Nhibernate确实是个好东西,让我在开发上省去了很多时间,今天虽然介绍了AutoMapping,但我不推荐您在您的项目中使用,用起来没手感(个人感觉),需要约定的东西太多了,对于数据库结构也得按照他的契约来...,否则就得自己重写一些方法,实现一些类,有点累人。

    97760

    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

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

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

    1.4K40

    盘点 .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.2K42

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

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

    2.9K20

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

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

    35310
    领券