首页
学习
活动
专区
工具
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升级介绍中已经说明)。

69680

如何使用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版,我们可以使用如下代码,忽略这些属性不进行映射,非常不错,赞一个。

    65050

    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:今天本来心情不错,没想到有客人来拉横幅,一直公司吵闹,害的我无法集中精力,估计文章中会有错的地方,大家见谅了。

    97060

    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.6K20

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

    60411

    Entity Framework 系统约定配置

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

    83720

    NHibernate 缓存

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

    44410

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

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

    13010

    Entity Framework 约定

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

    1.3K10

    #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

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

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

    1.1K30

    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

    分布式系统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

    64930

    Entity Framework DataAnnotations

    但是EF中它又可以对映射关系进行控制,相比较Fluent API使用起来要简单一些。...[ConcurrencyCheck] public string Address { get; set; }  6.TimestampAttribute:将的数据类型指定为行版本...程序集中定义了更多的数据映射特性 7.DatabaseGeneratedAttribute:标记指定实体属性是由数据库生成的,并指定生成策略(None数据库不生成值,Identity当插入行时,数据库生成值...注意:DataAnnotations可以同时同一个类后者属性上使用多个标记属性,上面的例子中对于每个类或属性只使用了一个单独的标记属性是为了说明起来更加简单;另外声明的例子中同时使用“ConcurrencyCheck...”和“TimeStamp”指定了不同的只是为了演示,一般情况下我们通过其中一种方式即可。

    84930
    领券