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

在使用Fluent Nhibernate Table-Per-Subclass策略时,您能指定标识列吗?

在使用Fluent Nhibernate的Table-Per-Subclass策略时,可以指定标识列。Table-Per-Subclass是一种继承映射策略,它将每个子类映射到单独的数据库表中,并使用一个共同的父表来存储通用属性。

在Fluent Nhibernate中,可以使用Id方法来指定标识列。示例代码如下:

代码语言:csharp
复制
public class BaseEntityMap<T> : ClassMap<T> where T : BaseEntity
{
    public BaseEntityMap()
    {
        Id(x => x.Id).Column("id");
        // 其他映射配置
    }
}

public class SubclassEntityMap : SubclassMap<SubclassEntity>
{
    public SubclassEntityMap()
    {
        KeyColumn("subclass_id");
        // 其他映射配置
    }
}

在上述代码中,BaseEntityMap是父类的映射配置,使用Id方法指定了标识列为"id"。SubclassEntityMap是子类的映射配置,使用KeyColumn方法指定了子类对应的标识列为"subclass_id"。

通过这样的配置,Fluent Nhibernate会在生成的SQL语句中正确地使用指定的标识列。同时,根据具体的业务需求,可以进一步配置其他映射信息。

推荐的腾讯云相关产品:腾讯云数据库TDSQL、腾讯云服务器CVM、腾讯云容器服务TKE。

  • 腾讯云数据库TDSQL:腾讯云提供的高性能、可扩展的关系型数据库服务,支持MySQL、PostgreSQL等数据库引擎,适用于各种规模的应用场景。
  • 腾讯云服务器CVM:腾讯云提供的弹性计算服务,可快速创建和管理云服务器实例,提供高性能、可靠稳定的计算能力。
  • 腾讯云容器服务TKE:腾讯云提供的容器管理服务,支持容器化应用的部署、扩缩容和管理,提供高可用、高性能的容器集群。

以上是腾讯云提供的一些相关产品,可以根据具体需求选择适合的产品来支持Fluent Nhibernate Table-Per-Subclass策略的应用部署和运行。

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

相关·内容

Fluent NHibernate之旅(三)-- 继承

、泛型、Lambde表达式等等Vs、Framework等特性简单完成映射工作,同时也能让我们学习NHibernate的映射方式,一举夺得,这么好玩的东东,有理由不继续完成这个系列?...从这一篇开始,我们将使用Fluent NHibernate RC 1.0 版来进行演示,先前的代码,我会另外进行说明 继承 OOP中,继承作为OO中重要的特性,如果NHibernate没有对它的支持,...,好的做法是把子类映射区分开来,等一下你会知道,第一种策略和第二种策略都会采用这样的方式来进行映射,至于映射会使用subclass还好是join-subclass,FluentNHibernate会自动生成的...在说一下DiscriminateSubClassesOnColumn,这就是标识符的一个映射方式,因为RC版之前,我们可以使用SetAttribate的方法,设定我们的父类为"not-null" 但是...子类中,我们必须制定对应的标识符值,这里又出现败笔了,只能设定string类型,My God,变相的SetAttribute,我觉得这个已经脱离了Fluent的称号了(RC升级介绍中已经说明)。

69080

如何使用Fluent Nhibernate中的Automapping进行OR Mapping映射

由于项目中使用NHibernate来作为ORMapping构建数据访问层,那么就必须要配置Object和DataTable的映射。...最早的项目中,我们使用了最传统的XML配置文件的方式编写映射关系,但是这样太麻烦,每次修改class和表都要去修改对应的XML文件,而且还容易出错,一定有疏忽遗漏的地方,还不容易找出错误,所以第二个项目中...,我们使用Fluent NHibernate的Mapping方式代替XML配置。...使用Fluent NHibernate的最大好处是降低了出错的机会,因为Fluent Nhibernate的配置是使用C#来编写,可以智能感知,而且还能编译,不像原始的XML配置,写错了都不知道。...更多的修改意味着更多的风险,为了减少这方面的风险,同时为了减少配置的工作量,所以最新的项目中采用了Fluent NHibernate中的Automapping。

1.1K10
  • Fluent NHibernate RC 1.0 --升级内容

    Fluent NHiberante(FNT) RC 1.0 已经在上个星期发布了,其中很多东西被废弃,有些方法改进,还有一些命名更贴切,虽说不是很完美,但已经做的非常完善了,如果大家使用中,发现bug...Fluent NHibernate Release Notes 1.0 : http://wiki.fluentnhibernate.org/Release_notes_1.0 FNT映射的时候,分为...Fluent Mapping(手动)和Auto Mapping(自动)两种方式,我我的“Fluent系列”中一直使用的是手动方式,我觉得相对应的好控制,而且也让我同时能更好的学习NHibernate。...而且维护、阅读都比原先的方式要好,你不觉得?...3、忽略属性(IgnoreProperty),这个不错,以前,我们自动映射的时候每个属性不管要不要都映射了,RC版,我们可以使用如下代码,忽略这些属性不进行映射,非常不错,赞一个。

    64650

    Fluent NHibernate之旅二--Entity Mapping

    如果你要体验NHibernate的强大,首先你就要学会配置,包括SessionFactory和Mapping的配置。今天跟上一篇一样,会使用传统方式和 NHibernate 进行讲解。...Map(Expression> expression):与Id类似,对应NHibernate中的property,我这里只是简单的映射,还有很多特性,今后的教程中会慢慢使用...对于我这种新手来说,Fluent更适合我,因为我可以用它来进行学习NHibernate。 映射做好了,接下来我们NHibernate中把映射加到配置中。...二、使用自定义类型映射实体属性 NHibernate支持我们用自定义的类型来映射属性,但因为我是初学,我真的不会,当然我在网上找到了相关的资料,在此也不多说,就说说Fluent的方式吧,我映射自定义属性的时候...总结 今天介绍了如何映射简单的实体,但很多时候这都是理想的数据设计,还有更多复杂,不可预计的数据设计,这时候我们Fluent能做到

    1K90

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

    Fluent Nhibernate(以下简称FN)发展到如今,已经相当成熟了,Nhibernate的书中也相应的推荐了使用FN来进行映射配置,之前写的FN之旅至今还有很多人会来私信我问题,说来惭愧,从...NHibernate之旅(四)-- 关系(下) 安装 现在在项目中使用FN很方便,使用Nuget管理就可以了,但我还是建议大家,可以下载源代码,自己可以详细了解下。...NuGet下载FluentNhibernate后,会自动下载安装Nhibernate及Iesi。...Fluent Nhibernate确实是个好东西,让我开发上省去了很多时间,今天虽然介绍了AutoMapping,但我不推荐您在您的项目中使用,用起来没手感(个人感觉),需要约定的东西太多了,对于数据库结构也得按照他的契约来...但在开发一些小工具,又要用到小型存储数据的话,不妨可以试试这种方式。 PS:今天本来心情不错,没想到有客人来拉横幅,一直公司吵闹,害的我无法集中精力,估计文章中会有错的地方,大家见谅了。

    96360

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

    前言 上一篇《C# 数据操作系列 - 11 NHibernate 配置和结构介绍》 介绍了Nhibernate里的配置内容。这一篇将带领大家了解一下如何使用NHIbernate。...之前提到NHibernate继承了Hibernate的一些传统:使用XML文件进行配置,这一点也是备受争议。...不过,有社区爱好者开发了一个名为《Fluent NHibernate》的项目,用来支持NHibernate的流式配置。...(7) /> schema: 数据库schema的名称 default-cascade:可选项,默认是none,一种默认的级联风格 auto-import:明确是否可以查询中使用非限定类名...assembly:指定映射对象所在的assembly,一般情况指的是项目名称 namespace:所在命名空间 default-access:可选的,默认是property,表示NHibernate的读取数据策略

    1.1K20

    Fluent教程文档指南

    5.1.表达式简介 Fluent表达式语言是一种基于Python的解释声明性语言,使您能够:指定关于时间、迭代次数、位置和解变量的复杂边界条件和源术语。根据时间或迭代指定各种模型和求解器设置。...例如: fluent教程文档的表达式计算结果可以是实数、布尔值、实数域或布尔值域。例如,当在区域上计算,2*StaticPressure的计算结果是一个实域。...Profiles 可以表达式中使用profiles来指定边界和像元区域条件,用于后处理和简化操作。...配置文件是可以导入到Fluent中的表格数据,除了一个或多个因变量之外,通常还包含X、Y和Z(对于空间配置文件)或Time(对于瞬态配置文件)。...5.4.1.抛物线流入剖面 5.4.2 变抛物线流入 5.4.3受控出口温度 5.4.4用参数化迎角计算力

    1.5K20

    EntityFramework Core 学习扫盲

    还记得我们第一步中MyContext定义的OnModelCreating方法Fluent Api就是在那里面使用的 增加以下代码至OnModelCreating方法。...备用键可以用作实体中除主键和索引外的唯一标识符,还可以用作外键目标。Fluent Api中,有两种方法可以指定备用键,一种是当开发者将实体中的属性作为另一个实体的外键目标,另一种是手动指定。...备用键 备用键之前的小节中已经提过,使用以下代码配置的将自动设置为唯一标识。...唯一索引 索引及其唯一性只由Fluent Api方式指定,由索引来指定唯一是比备用键更好的选择。...,HasValue提供新增或修改实体,根据实体类型将不同的标识自动写入标识中。

    9.6K90

    NHibernate 缓存

    注意最后一句, 明确说明了一级缓存的用途: 在对象树种导航、浏览使用一级缓存; 根据对象的 id 加载对象; 由此可以看出, 一级缓存的作用是比较有限的, 但是也有用得着的地方。...一级缓存测试 一级缓存缓存无需配置, 默认支持, 因此, 使用 session 查询对象, 如果仅仅是根据 id 加载指定的对象, 需要使用 session 的 Get 或 Load 方法, 这样可以充分利用...注意: 如果查询不想使用一级缓存, 可以 StatelessSession 对象, 和 Session 对象用法一样, 只是该对象没有一级缓存。...也可以实体类的 hbm 映射文件中配置使用二级缓存, 不过 hibernate.cfg.xml 文件中统一配置是推荐的做法。...include:可选,默认值为all,当取non-lazy设置延迟加载的持久化实例的属性不被缓存。 usage:声明缓存同步策略,就是上面说明的四种缓存策略

    60011

    Entity Framework 系统约定配置

    EF中是以一种约定的方式进行表、同实体类进行映射的,与此同时为了提高最大的灵活性EF中可以通过Fluent API和Data Annotations两种方式对映射进行灵活配置。...2.将数据类中的“ID”属性或者“+ID”作为主键(不区分大小写),并且如果该列为数值类型或者GUID将作为标识。   ...3.使用导航属性约束两个表之间的关系,在从表数据类中除了导航属性,推荐定义一个外键属性在从表数据类中(如果不指定将默认生成一个“+”的外键;此外在主表中推荐定义一个集合从表属性用户导航...4.当EF按照上述规则在数据类中没有找到主键属性(或者通过fluent API、Data Annotations没有定义)将认为此类为“复杂类型”。   ...EF提供了两种方式进行映射配置:Data Annotations和Fluent API。

    83420

    NHibernate 缓存

    注意最后一句, 明确说明了一级缓存的用途: 在对象树种导航、浏览使用一级缓存; 根据对象的 id 加载对象; 由此可以看出, 一级缓存的作用是比较有限的, 但是也有用得着的地方。...一级缓存测试 一级缓存缓存无需配置, 默认支持, 因此, 使用 session 查询对象, 如果仅仅是根据 id 加载指定的对象, 需要使用 session 的 Get 或 Load 方法, 这样可以充分利用...注意: 如果查询不想使用一级缓存, 可以 StatelessSession 对象, 和 Session 对象用法一样, 只是该对象没有一级缓存。...也可以实体类的 hbm 映射文件中配置使用二级缓存, 不过 hibernate.cfg.xml 文件中统一配置是推荐的做法。...include:可选,默认值为all,当取non-lazy设置延迟加载的持久化实例的属性不被缓存。 usage:声明缓存同步策略,就是上面说明的四种缓存策略

    44110

    Entity Framework 约定

    约定,类似于接口,是一个规范和规则,使用Code First 定义约定来配置模型和规则。在这里约定只是记本规则,我们可以通过Data Annotaion或者Fluent API来进一步配置模型。...如果主键类型是***int*** 或者 guid 类型,主键将会被映射为自增长标识。...同样,也可以模型中定义这样的关系。EF中定义关系要使用到导航属性,通过导航属性可以定义多个模型之间的关系。大部分情况下我们会将导航属性和外键属性结合在一起使用。...First 不能推断出模型中的主键,并且没有通过Data Annotations 或者Fluent API进行手动配置主键,该模型将会自动被配置为复杂类型,检测复杂类型要求该类型没有引用实体类型的属性...自定义约定可以看作全局约定规则,将会运用到所有实体和属性,也可以显示实现应用到指定的模型上。

    1.3K10

    听GPT 讲Rust源代码--compiler(5)

    它包含了一些标志和参数,可以用来指定如何生成类型标识符。例如,可以选择只生成类型的名称,也可以选择包含类型的模块路径或泛型参数等。...在生成类型标识,可能会存在一些约束,比如类型参数的边界或类型之间的关联。Obligation用于记录这些约束信息,并在生成类型标识进行相应处理。...Alias: 该枚举类型用于表示查询系统中的别名处理方式,如禁止使用别名、允许使用别名等。 这些枚举类型用于指定不同的处理方式和选项,以便在错误处理中使用。...InlinedDef: 表示函数体被内联(即代码复制)后的版本,用于代码内联解析函数体。 FromId: 表示函数体被标识符引用,用于通过标识符查找和解析函数体。...这个宏可以让开发者Rust代码中方便地使用Fluent的表达式和语法标记。

    11710

    #1构造函数内调用虚方法 | TW洞见

    已经本网协议授权的媒体、网站,使用时必须注明"内容来源:ThoughtWorks洞见",并指定原文链接,违者本网将依法追究责任。...虚方法是.NET中的重要概念,可以说某种程度上,虚方法使得多态成为可能。 然而虚方法的使用却存在着很大学问,如果滥用的话势必对程序产生很大的负面影响。...而由于之前提到的类型初始化顺序,执行Base b = new Derived();这样的代码,Base的构造函数要早于Derived的构造函数执行,因此执行到foo.Bar()foo还是个空引用...我们能完全避免这么做?很遗憾,答案是不能。比如如果项目中使用NHibernate,框架本身要求ORM实体类中,所有与数据库具有对应关系的属性都必须为虚属性。...但我们要注意,代码中保证那些可能会被继承的实体,子类中重写那些虚属性,不要依赖于子类自身的构造函数(这几乎是可以保证的,因为与数据库映射的属性,只能是最简单的getter/setter)。

    1.2K110

    将Hbase ACL转换为Ranger策略

    HBase 授权 如果设置了授权(例如使用 Kerberos 并将hbase.security.authorization属性设置为true),则用户可以允许他们访问的资源上定义规则。...策略标签 为此策略指定标签。您可以根据这些标签搜索报告和过滤策略。 正常/覆盖 使您能指定覆盖策略。选择覆盖后,策略中的访问权限将覆盖现有策略中的访问权限。...HBase 族 对于选定的表,指定策略适用的族。 HBase 对于选定的表和族,指定策略适用的。 描述 (可选)描述政策的目的。 审计日志 指定是否审核此策略。(取消选择以禁用审核)。...3.2 允许/拒绝条件Apache Ranger 支持以下访问条件: 允许 从允许中排除 拒绝 从拒绝中排除 这些访问条件使您能够设置细粒度的访问控制策略。...委派管理员 您可以使用 Delegate Admin 为策略指定的用户或组分配管理员权限。管理员可以编辑或删除策略,也可以基于原始策略创建子策略

    1.1K20

    Kubernetes DaemonSet的滚动升级

    目前我们的线上环境主要用到以下两个DaemonSet: kube-flannel-ds 这个是部署Kubernetes集群选用的是flannel network add-on fluent-bit 这个是用来部署各个...我们选用的日志收集方案是EFK(Elasticsearch+Fluent-bit+Kibana),后边有时间再写点fluent-bit的内容 我们目前线上Kubernetes的版本总是落后最新的release...版本,例如现在Kubernetes最新是1.7,我们使用1.6.x。...我们使用1.6.x的过程中会考虑提前升级这些组件,以便于后续顺利将Kubernetes升级到1.7。DaemonSet的升级就是需要考虑的。...DaemonSet的升级策略 DaemonSet目前有两种升级策略,可以通过.spec.updateStrategy.type指定: OnDelete: 该策略表示当更新了DaemonSet的模板后,只有手动删除旧的

    1.7K50

    数据库模型设计——主键的设计

    插入新数据,GUID一般都是使用NewId()这样的生成随机GUID的方式生成的,所以也不是顺序增长的,插入速度上不会很快。...通过上面的比较,我们知道使用数字类型是更好的方式,那么我们为什么还会有人使用GUID和字符串来当主键呢?那是因为: 相对于数字类型,字符类型更易读易记,检索关联的数据,更方便直接。...联合主键主要使用在多对多的关系,中间表就需要使用联合主键。简单的多对多关系中,我们不需要为中间的关联建立实体,所以中间表可能就只需要两,分别是两个实体表的主键。...该值由NHibernate程序内部生成。 其他程序赋值,完全由程序根据自己的算法生成并赋值。...以SQL Server为例,默认情况下,建立主键的,就会建立聚集索引,但是实际上,我们可以在建立主键使用聚集索引。

    1.1K30

    分布式系统ID生成方案汇总

    分布式系统中,需要对大量的数据、消息、请求等进行唯一的标识,例如分布式数据库的ID需要满足唯一且多数据库同步,单一系统中,使用数据库自增主键可以满足需求,但是分布式系统中就需要一个能够生成全局唯一...MySQL自增列使用auto_increment标识字段达到自增,创建表将某一定义为auto_increment,则改列为自增列。这定了auto_increment的必须建立索引。...auto_increment使用说明 如果把一个NULL插入到一个auto_increment数据中,MySQL将自动生成下一个序列编号。...明确指定值,则等同于插入NULL值; 当插入记录,如果为auto_increment数据列明确指定了一个数值,则会出现两种情况,情况一,如果插入的值与已有的编号重复,则会出现出错信息,因为auto_increment...(当前时间截 - 开始时间截) * 得到的值),这里的的开始时间截,一般是我们的id生成器开始使用的时间,由我们程序来指定的(如下下面程序IdWorker类的startTime属性)。

    1.1K20

    Mybatis-Puls 常用注解

    MyBatis-Plus实现基本的CRUD,我们并没有指定要操作的表,只是Mapper接口继承BaseMapper,设置了泛型User,而操作的表为user表。...2、@TableId MyBatis-Plus实现CRUD,会默认将id作为主键,并在插入数据,默认基于雪花算法的策略生成id。...若实体类和表中表示主键的不是id,而是其他字段,例如uid,MyBatis-Plus会自动识别uid为主键? 我们将实体类中的属性id改为uid,将表中的字段id也改为uid,测试添加功能。...实体类中uid属性上通过@TableId将其标识为主键。 即可成功执行SQL语句。...IdType.AUTO 使用数据库的自增策略,注意,该类型请确保数据库设置了id自增, 否则无效 配置全局主键策略: 3、@TableField 经过以上的测试,我们可以发现,MyBatis-Plus

    64230
    领券