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

C# - FluentNHibernate映射,如何使用生成器映射表中的非键列

FluentNHibernate是一个开源的用于.NET平台的ORM(对象关系映射)工具,它提供了一种流畅的编程接口来映射.NET对象到数据库表中。

在使用FluentNHibernate进行映射时,可以使用生成器(Generator)来定义主键的生成策略。生成器主要用于为主键列生成唯一的标识符。

如果要映射表中的非键列,可以使用组件(Component)来完成。组件表示一个可嵌套的对象,可以将其视为一个子对象,包含了多个属性。使用组件可以将多个属性映射到数据库表的同一行中。

以下是使用FluentNHibernate进行C#映射的示例代码:

代码语言:txt
复制
using FluentNHibernate.Mapping;

public class UserMap : ClassMap<User>
{
    public UserMap()
    {
        Table("User"); // 设置表名
        
        Id(x => x.Id); // 定义主键

        Map(x => x.Username); // 映射非键列
        Map(x => x.Email);
        
        Component(x => x.Address, c =>
        {
            c.Map(x => x.Street);
            c.Map(x => x.City);
            c.Map(x => x.State);
            c.Map(x => x.ZipCode);
        });
    }
}

上述代码中,使用Table方法设置了表名,使用Id方法定义了主键列。使用Map方法映射了非键列UsernameEmail,并使用Component方法映射了地址(Address)组件,该组件包含了StreetCityStateZipCode属性。

在使用FluentNHibernate时,可以结合腾讯云提供的数据库服务,如TencentDB for MySQL、TencentDB for PostgreSQL等。这些服务提供了高性能、高可用的云数据库解决方案,可以满足各种应用场景的需求。

更多关于腾讯云数据库产品的介绍和详细信息,您可以参考以下链接:

请注意,上述答案仅针对FluentNHibernate映射中的非键列的部分,如果还有其他相关问题,请继续提问。

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

相关·内容

使用VS2015和Nhibernate实现与MySql数据库连接,实现增删改查操作

先写一个简单给你定义数据库添加一条元素代码:(不使用Nhibernate) 前提:先把该用dll文件,添加到引用里面去不然,会连接不成功,之前下载Connector/Net(选择.Net&...C#连接MySql数据库代码 using System; using System.Collections.Generic; using System.Linq; using System.Text...嗯,如果能够运行成功,说明我们步骤都是正确,这就是一个简单测试,测试成功,说明我们VS与MySql数据连接是没有任何问题,只要把该引入都引入了就不会报什么异常错误之类,接下来将用C#代码和...int Age { get; set; }//表年龄 } } 2.再在Modle文件下建立一个映射类,名字为MapAPengChao,这个类代码如下: using FluentNHibernate.Mapping...> x.Id).Column("Id");//主键映射主键 //其他元素我们使用Map来映射 Map(x => x.Name).Column("name

1.4K30

Fluent NHibernate之旅

ORM大家都非常熟悉了吧,我相信也有很多朋友正在用自己或者一些公开框架,而最常用而且强大Hibernate了(Net为NHibernate),网上文档非常多,不过在博客园,介绍NHibernate...这是官方说明,大体的话也就是用编程方式进行配置,让你能更好理解,不需要编写复杂映射文件,它能完全替换NHibernate映射文件,让你在映射时候能使用C#强类型方式。...下载地址:http://fluentnhibernate.org/ 二、使用NHibernate和Fluent创建ISessionFactory 准备工作: 1、下载Fluent类库,其中已经包含了NHibernate...SessionFactory反映了数据库映射关系,我们来看下配置: ...下面我们在代码创建一个SessionFactory,NHibernate建议我们在一个应用程序中使用一个数据库一个SessionFactory,这里我们用单数据库,代码如下: public static

1.1K60
  • 13.2 具体集合

    Java类库为映射表提供了两个通用实现:HashMap和TreeMap,这两个类都实现了Map接口。   散映射表进行散,树映射表整体顺序对元素进行排序,并将其组织成搜索树。...散或比较函数只能作用于。与关联值不能进行散或比较。 与集一样,散稍微快一些,如果不需要按照排列顺序访问,就最好选用散。   每当往映射表添加对象时候,必须同时提供一个。...remove方法用于从映射表删除给定对应元素;size方法用于返回映射表元素数。   ...方法,实际上是从映射表删除了以及对应值。...,然后从映射表删除掉一个键值对,接下来修改某一个对应值,并调用get方法查看这个值。

    1.8K90

    如何使用Fluent NhibernateAutomapping进行OR Mapping映射

    使用Fluent NHibernate最大好处是降低了出错机会,因为Fluent Nhibernate配置是使用C#来编写,可以智能感知,而且还能编译,不像原始XML配置,写错了都不知道。...(比如CostCenter类对应表COST_CENTER) 类主键使用Id命名,表主键使用表名+“_ID”命名方式。...(比如CostCenter中有public virtual long Id{get;set;},对应表COST_CENTER_ID) 对于一对多关系,使用父方类名作为属性名,表中使用父表主键列名作为对应列名...,统一使用PARENT_ID作为外 colName = "PARENT_ID"; else { colName = entityType.Name.ToDatabaseName...TYPE } } 然后就是关于DiscriminateColumn如何映射成对应Subclass,需要实现ISubclassConvention接口,代码如下: public class

    1.1K10

    Java漫谈-容器

    除了优先级队列,Queue将准确地按照元素被置于Queue顺序产生它们。 Map 映射表(也称为关联数组)基本思想:它维护-值(对)关联,因此可以用来查找值。...它们都有相同基本接口Map,但是行为特性各不相同,这表现在效率、键值对保存及呈现次序、对象保存周期、映射表如何在多线程程序工作和判定“”等价策略等方面。...性能 性能是映射表一个重要问题。当get()中使用线性搜索时,执行速度会相当慢,这正是HashMap提高速度地方。 HashMap使用了特殊值,称作散码,来取代对缓慢搜索。...IdentityHashMap 使用== 代替equals()对“”进行比较映射。专为解决特殊问题而设计。 散映射中存储元素时最常用方式。...对Map中使用要求与对Set元素要求一样: 任何必须具有一个equals()方法。 如果被用于散Map,那么它必须还具有恰当hashCode()方法。

    1.5K10

    Hibernate Spring Java Persistence API EJB3 相关术语及关键字

    O/R Mapping 对象/关系数据库映射 identifier property: 标识属性 discriminator: 辨别标志(不使用"鉴别器") join-subclass,union-subclass...embedded objects 嵌入对象 embeddable object 可嵌入对象 identity generator ID生成器 sequence generator 序列生成器...scale 十进制 primary key 主键/主关键字 primary key column 主键 foreign key 外/外关键字 foreign key column 外.../映射表 根据情况选择不翻译 target entity 目标实体 entity 实体 Semantic 语义 java representation java表示 primitive type...physical mapping 物理映射 identity 标识(符) 能唯一标识一个对象字段/,对应到数据库一般为主键 Identifier 标识符 Versioning for optimistic

    89330

    PHP7数组底层实现示例

    那么这些特性在底层是如何实现呢? 这就得从数据结构说起了。 数据结构 PHP 数组实际上是一个有序映射映射是一种把 values 关联到 keys 类型。...PHP 数组底层实现是散列表(也叫 hashTable ),散列表是根据(Key)直接访问内存存储位置数据结构,它key – value 之间存在一个映射函数,可以根据 key 通过映射函数得到值直接索引到对应...答案是中间映射表,为了实现散列表有序性,PHP 为其增加了一张中间映射表,该表是一个大小与 Bucket 相同数组,数组中储存整形数据,用于保存元素实际储存 Value 在 Bucekt 下标...Bucekt 数据是有序,而中间映射表数据是无序。 ? 而通过映射函数映射值要在中间映射表区间内,这就对映射函数提出了要求。...举个例子: 当我们访问 $arr[‘key’] 过程,假设首先通过散运算得出映射表下标为 -2 ,然后访问映射表发现其内容指向 arData 数组下标为 1 元素。

    1.6K20

    Java之映射

    1.基本映射操作: Java类库为映射提供了两个通用实现:HashMap和TreeMap,这两个类都实现了Map接口 散映射(HashMap)对进行散,树映射(TreeMap)用整体顺序对元素进行排序...与关联值不不能进行散或比较 与集一样,散映射比树映射稍微快一些,所以在不需要按照排列顺序访问时候,最好选用散映射 OP->>要进行键值存储,必须使用put方法 OP->>要进行键值访问,必须使用...,更新一个映射使用是put方法,但是,考虑下面一种情况,假如我想将下面一段话进行单词统计,然后将得到结果存放到一个映射表。...我们可以定义一个counts映射表。...extends V> remappingFunction) 在所有映射项上应用函数。将null结果关联,对于null结果,则将相应删除。

    1.1K71

    SqlAlchemy 2.0 中文文档(十)

    然而,在 SQLAlchemy ,一旦映射类本身成为 SQL 表达式构造源,即类属性直接链接到映射表,这个用例就变得不可行了。...虽然此行为可能在将来版本更改,但目前这种情况通常“可以解决”;None 默认值意味着 Column 不会得到默认生成器,而引用None默认值将在调用__init__()时提前分配给对象,在任何情况下...sort_order – 表示当 ORM 创建Table时,此映射如何与其他排序整数。对于具有相同值映射,默认使用默认排序,首先放置在主类定义映射,然后放置在超类映射。...Mapper.column_prefix 参数在现代用法不常见。对于处理反射表,更灵活自动命名方案是拦截反射时 Column 对象;请参阅从反射表自动化命名方案一节关于此用法模式注释。...映射功能现在更适合使用AliasedClass构造,1.3 也可以作为relationship()目标使用

    21710

    SqlAlchemy 2.0 中文文档(五)

    另请参见 使用 MetaData 描述数据库 将 ORM 映射应用于现有数据类(传统数据类用法) 映射表替代属性名称 显式命名声明式映射一节说明了如何使用mapped_column()为生成Column...另请参阅 自动映射 自动从反射表命名列方案 当使用任何以前反射技术时,我们有选择通过映射命名方案。...#### 将整个声明映射到 Python 类型 上一节详细介绍了如何使用PEP 593Annotated类型实例作为registry.type_annotation_map字典。...请参阅 用 MetaData 描述数据库 将 ORM 映射应用于现有数据类(传统数据类使用映射表备用属性名称 明确命名声明式映射说明了如何使用mapped_column()为生成Column...### 映射表备用属性名称 命名声明式映射 部分演示了如何使用mapped_column()为生成Column对象提供一个与其映射属性名称分离特定名称。

    26610

    Java HashMap 简介与工作原理

    HashMap简介 映射表(Map)数据结构。映射表用来存放键值对。如果提供了,就能查找到值。 Java类库为映射表提供了两个通用实现:HashMap和TreeMap。...HashMap采取存储方式为:链表数组或二叉树数组。 散映射表进行散,数映射表整体顺序对元素进行排序,并将其组织成搜索树。 散或比较函数只能左右与。与关联值不能进行散或比较。...每当往映射表添加或检索对象时,必须同时提供一个。即通过Key查找Value。 必须是唯一。不能对同一个存放两个值。如果对同一个两次调用put方法,后一个值将会取代第一个值。...extends V> map) 用给定容量和装填因子构造一个空散映射表。 装填因子是一个0.0~1.0之间数值。这数值决定散列表填充百分比。默认装填因子是0.75。...检查table实例是否存在,获取table长度 检查输入hash值,计算得到索引值 若table对应索引值没有元素,插入新建元素 检查当前是否需要扩充容量 尝试更新现有的元素 若使用了二叉树结构

    1.8K100

    ETL测试或数据仓库测试入门

    在从事ETL测试时,有两份文档是ELT测试人员实时使用: ETL映射表:一个ETL映射表包含源和目的地表所有的信息,包括每个及其引用表等约束关系。...ETL测试人员需要更为优美的SQL查询语句,因为在ETL测试各阶段可能需要编写具有多个连接大查询来验证数据。ETL映射表在为数据验证编写查询时提供大量有用信息。...源、目标数据库模式:该模式应该便于验证映射表所有细节。...验证源数据类型长度不应小于目标数据类型长度6. 针对映射表对数据表名称进行验证 3 约束验证 验证目标表约束关系满足我们期望设计 4 数据一致性问题 1....验证目标表业务要求所有惟一性指标均正确实现(例如主键、惟一标识、或其他任一惟一表示)2. 验证从源数据多合并而成数据是正确3.

    1.4K50

    ETL测试或数据仓库测试入门

    在从事ETL测试时,有两份文档是ELT测试人员实时使用: ETL映射表:一个ETL映射表包含源和目的地表所有的信息,包括每个及其引用表等约束关系。...ETL测试人员需要更为优美的SQL查询语句,因为在ETL测试各阶段可能需要编写具有多个连接大查询来验证数据。ETL映射表在为数据验证编写查询时提供大量有用信息。...源、目标数据库模式:该模式应该便于验证映射表所有细节。...验证源数据类型长度不应小于目标数据类型长度6. 针对映射表对数据表名称进行验证 3 约束验证 验证目标表约束关系满足我们期望设计 4 数据一致性问题 1....验证目标表业务要求所有惟一性指标均正确实现(例如主键、惟一标识、或其他任一惟一表示)2. 验证从源数据多合并而成数据是正确3.

    1.4K61

    ETL测试或数据仓库测试入门

    在从事ETL测试时,有两份文档是ELT测试人员实时使用: ETL映射表:一个ETL映射表包含源和目的地表所有的信息,包括每个及其引用表等约束关系。...ETL测试人员需要更为优美的SQL查询语句,因为在ETL测试各阶段可能需要编写具有多个连接大查询来验证数据。ETL映射表在为数据验证编写查询时提供大量有用信息。...源、目标数据库模式:该模式应该便于验证映射表所有细节。...验证源数据类型长度不应小于目标数据类型长度6. 针对映射表对数据表名称进行验证 3 约束验证 验证目标表约束关系满足我们期望设计 4 数据一致性问题 1....验证目标表业务要求所有惟一性指标均正确实现(例如主键、惟一标识、或其他任一惟一表示)2. 验证从源数据多合并而成数据是正确3.

    1.7K61

    大数据测试之ETL测试入门

    在从事ETL测试时,有两份文档是ELT测试人员实时使用: ETL映射表:一个ETL映射表包含源和目的地表所有的信息,包括每个及其引用表等约束关系。...ETL测试人员需要更为优美的SQL查询语句,因为在ETL测试各阶段可能需要编写具有多个连接大查询来验证数据。ETL映射表在为数据验证编写查询时提供大量有用信息。...源、目标数据库模式:该模式应该便于验证映射表所有细节。...验证源数据类型长度不应小于目标数据类型长度6. 针对映射表对数据表名称进行验证 3 约束验证 验证目标表约束关系满足我们期望设计 4 数据一致性问题 1....验证目标表业务要求所有惟一性指标均正确实现(例如主键、惟一标识、或其他任一惟一表示)2. 验证从源数据多合并而成数据是正确3.

    3K92

    ETL测试或数据仓库测试入门

    在从事ETL测试时,有两份文档是ELT测试人员实时使用: ETL映射表:一个ETL映射表包含源和目的地表所有的信息,包括每个及其引用表等约束关系。...ETL测试人员需要更为优美的SQL查询语句,因为在ETL测试各阶段可能需要编写具有多个连接大查询来验证数据。ETL映射表在为数据验证编写查询时提供大量有用信息。...源、目标数据库模式:该模式应该便于验证映射表所有细节。...验证源数据类型长度不应小于目标数据类型长度6. 针对映射表对数据表名称进行验证 3 约束验证 验证目标表约束关系满足我们期望设计 4 数据一致性问题 1....验证目标表业务要求所有惟一性指标均正确实现(例如主键、惟一标识、或其他任一惟一表示)2. 验证从源数据多合并而成数据是正确3.

    2.3K50

    java面试热点:集合框架(二)

    大概意思是:一个把映射到值对象被称作一个Map对象。映射表不能包含重复,每个至多可以与一个值关联。...Map接口提供了三个集合视图(关于集合视图概念我们下面会提到):集合视图、值集合视图以及键值对集合视图。 一个映射表顺序取决于它集合视图迭代器返回元素顺序。...当HashMap键值对数量超过了maxSize(即load factor与capacity乘积),它会再散,再散会重建内部数据结构,桶数(capacity)大约会增加到原来两倍。...总的来说,NavigableMap接口正如它名字所示,支持我们在映射表”自由航行“,正向或者反向迭代其中元素并获取我们需要指定位置元素。TreeMap实现了这个接口。...比如TreeMap和HashMapkeySet()方法就会返回一个相应映射表对象视图。通过使用视图可以获得其他实现了Map接口或Collection接口对象。

    57600

    数据库演习-Class2 基础操作

    使用数据库,后面的操作都在该数据库里面运行: use dlut002 ; 2.2 创建表: Create table 表名 #原则2:删除时先删除外所在该元素,再删除主键所在表, 下面例子要删除学生...,先删除映射表学号,再删除主键(学生)学号 首先认识数据之间关系: 学号-学生–玉兰卡-卡号 玉兰卡学号是外码,学生学号是主码 多对多对应关系,比如学生对老师,老师对学生,在这个关系中间弄个中间表...-叫映射表 在这个例子映射表三个属性:编号,学号,教工号 映射表里面挑属性,主键和外,主键独一无二区分(编号),学号教工号这样叫外 上面的关系:ER图, 实体:矩形 虚体:椭圆形 #注意写表语法...··是反向单引号,表示主键名字 #玉兰卡和学生一一对应,如何写约束关系?...选择】,再筛选where select sid,sname,phone,uptime from student as stu; 使用as起别名stu select sid,stu.sname,stu.phone

    34220

    数据库演习-Class2 基础操作

    使用数据库,后面的操作都在该数据库里面运行: use dlut002 ; 2.2 创建表: Create table 表名 #原则2:删除时先删除外所在该元素,再删除主键所在表, 下面例子要删除学生...,先删除映射表学号,再删除主键(学生)学号 首先认识数据之间关系: 学号-学生–玉兰卡-卡号 玉兰卡学号是外码,学生学号是主码 多对多对应关系,比如学生对老师,老师对学生,在这个关系中间弄个中间表...-叫映射表 在这个例子映射表三个属性:编号,学号,教工号 映射表里面挑属性,主键和外,主键独一无二区分(编号),学号教工号这样叫外 上面的关系:ER图, 实体:矩形 虚体:椭圆形 #注意写表语法...··是反向单引号,表示主键名字 #玉兰卡和学生一一对应,如何写约束关系?...选择】,再筛选where select sid,sname,phone,uptime from student as stu; 使用as起别名stu select sid,stu.sname,stu.phone

    30320

    2022 最新 MyBatis 面试题

    –用 result 属性来映射主键字段,property 为实体类属性名,column 为数据表属性–> <result property = “orderno” column =”order_no...10、Mybatis 是如何进行分页?分页插件原理是什么? Mybatis 使用 RowBounds 对象进行分页, 它是针对 ResultSet 结果集执行内 存分页 ,而 物理分页 。...11、Mybatis 是如何将 sql 执行结果封装为目标对象并返回? 都有哪些映射形式? 第一种是使用 标签, 逐一定义数据库列名和对象属性名之间 射关系。...第二种是使用 sql 别名功能, 将别名书写为对象属性名。...有了列名与属性名映射关系后, Mybatis 通过反射创建对象, 同时使用反射给 对象属性逐一赋值并返回, 那些找不到映射关系属性, 是无法完成赋值。 12、如何执行批量插入?

    14210
    领券