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

映射到Nhibernate中的Enum位标志

映射到Nhibernate中的Enum位标志是一种在NHibernate中将枚举类型映射到数据库中的方法。NHibernate是一个用于.NET平台的对象关系映射(ORM)工具,它允许开发人员将数据库表中的数据映射到C#中的类和对象。

在NHibernate中,枚举类型可以通过以下几种方式进行映射:

  1. 使用Enum类型:将枚举类型映射到数据库中的整数类型。在这种情况下,枚举值将存储为整数,并在从数据库中检索时转换回枚举值。
  2. 使用String类型:将枚举类型映射到数据库中的字符串类型。在这种情况下,枚举值将存储为字符串,并在从数据库中检索时转换回枚举值。
  3. 使用Flags属性:将枚举类型映射到数据库中的位标志。在这种情况下,枚举值将存储为位标志,并在从数据库中检索时转换回枚举值。

在NHibernate中,可以使用EnumStringTypeEnumType类型来映射枚举类型。EnumStringType类型将枚举值存储为字符串,而EnumType类型将枚举值存储为整数。如果要将枚举类型映射为位标志,则需要使用FlagsEnumType类型。

以下是一个使用位标志映射枚举类型的示例:

代码语言:csharp
复制
public enum Permissions
{
    Read = 1,
    Write = 2,
    Execute = 4
}

public class User
{
    public virtual int Id { get; set; }
    public virtual string Name { get; set; }
    public virtual Permissions PermissionFlags { get; set; }
}

public class UserMap : ClassMap<User>
{
    public UserMap()
    {
        Id(x => x.Id);
        Map(x => x.Name);
        Map(x => x.PermissionFlags).CustomType<FlagsEnumType<Permissions>>();
    }
}

在上面的示例中,Permissions枚举类型使用FlagsEnumType类型进行映射,将枚举值存储为位标志。在数据库中,PermissionFlags字段将存储一个整数值,该值表示所有允许的权限。当从数据库中检索User对象时,NHibernate将自动将位标志转换回Permissions枚举值。

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

相关·内容

Nhibernate入门与demo

本篇文章阅读对象是:Nhibernate初学者!如果你是Nhibernate研究者或者已经很熟练运用Nhibernate请不吝赐教,对本文不足之处进行指教。      带着问题去学习!...3、怎么搭建Nhibernate?      4、怎么使用Nhibernate?      好,我们就带着这几个问题开始我们Nhibernate旅程。    ...先看一张经典图:      ORM:对象关系映射(O/R Mapping,Object Relational Mapping)表示一种技术,用来把对象模型表示对象映射到基于SQL 关系模型数据结构中去...通俗讲,就是我们操作实体类,然后让ORM框架自动映射到数据库。      而Nhibernate就是:.Net环境下实现ORM技术一个框架!     ...先看项目整体图,作为初学demo 没有层次,没有优化,只是作为入门一个简单介绍!      第一步:设计数据库表。建立一个User表。

31430

NHibernate学习笔记之一,Hello world!

NHibernate是一个面向.NET环境对象/关系数据库映射框架,主要应用在数据持久层,和其它ORM框架一样用来把对象模型表示对象映射到基于SQL关系模型数据结构中去。...2、新建项目并添加引用,将NHibernate-3.3.0.GA-bin“Iesi.Collections.dll”与“NHibernate”引用到项目中,如图2所示复制Configuration_Templates...文件夹对应数据库配置文件,这里使用MSSQL,所以复制“MSSQL.cfg.xml”,并对NHibernate配置信息适当修改 。...3、编写实体类(POCO,Plain Old CLR Objects),映射文件包含POCO类映射到一个或者多个数据库表元数据信息。User.cs文件如下所示。...帮助类,Isession是NHibernate工作单元,它是一个持久化管理器,我们通过ISession来从数据库存取数据。

57420

Nhibernate_nhibernate与ef区别

NHibernate用于把你.Net对象持久化到底层关系数据库.你完全不用自己编写Sql语句去操作这些对象,NH会代替你做.你代码里面只需要关心这些对象,NH生成sql语句并能为你取到正确东西...:第一个tag是class,这里我们把类型名(类名和Assembly名)映射到数据库user表(这里和hibernate有些不同,我们必须告诉NH这个类从哪儿来.这个差异是由.Net和Java Reflect...机制不同引起-zyyang).这种情况下,我们是从Assembly NHibernate.Demo.QuickStart载入NHibernate.Demo.QuickStart.User类..NH...name"属性值就是我们写.Net类属性,column属性值就是在数据库与'Net类属性对应字段名.type属性是可选(如果你没有标明,NH会给出一个最适合),但是推荐做法是带上这个属性...让我们返回到"id" tag,你可能会猜想这个tag和映射到Primary Key有关.正确.ID tag格式和Property tag相似.我们从Property(name)映射到目标数据库字段

54930

NHibernate总结

对象关系映射(O/R Mapping,Object Relational Mapping)表示一种技术,用来把对象模型表示对象映射到基于SQL 关系模型数据结构中去。...封装Nhibernate底层操作,People.cs为实体类,People.hbm.xml为映射文件(把数据库表People映射到实体类People)。...,其中People实体类字段要设置为virtual。每个文件详细代码在下面介绍 (2)     在NH.Data层引用Nhibernate相关DLL ?...首先,我们要从ISessionFactory获取一个ISession(NHibernate工作单元)。ISessionFactory可以创建并打开新Session。...ISessionFactory通常是个线程安全全局对象,只需要被实例化一次。我们可以使用GoF23单例(Singleton)模式在程序创建ISessionFactory。

89040

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

实例状态 在NHibernate,一个可持久化对象有三种不同状态,依据与持久化上下文之间关系不同,其中ISession就是一个持久化上下文。...配置项介绍 在上一篇文章,我们介绍了一下如何设置NHibernate基本配置项,但是并未对配置项进行深入。...这一节,将带领大家看一下NHibernate我们常用配置,因为配置项有很多,但一大部分通常情况都遇不到使用它时候。...dialect 数据库方言,表示NHibernate连接数据库是什么,该用哪种格式解析关系映射到数据库SQL语句 default_schema 默认schema,用来设置连接字符串连接数据库默认...更新到数据库

1.1K20

Nhibernate_juan benet

NHibernate用于把你.Net对象持久化到底层关系数据库.你完全不用自己编写Sql语句去操作这些对象,NH会代替你做.你代码里面只需要关心这些对象,NH生成sql语句并能为你取到正确东西...:第一个tag是class,这里我们把类型名(类名和Assembly名)映射到数据库user表(这里和hibernate有些不同,我们必须告诉NH这个类从哪儿来.这个差异是由.Net和Java Reflect...机制不同引起-zyyang).这种情况下,我们是从Assembly NHibernate.Demo.QuickStart载入NHibernate.Demo.QuickStart.User类..NH...让我们暂时跳过”id” tag,先说property节点.”name”属性值就是我们写.Net类属性,column属性值就是在数据库与’Net类属性对应字段名.type属性是可选(如果你没有标明...让我们返回到”id” tag,你可能会猜想这个tag和映射到Primary Key有关.正确.ID tag格式和Property tag相似.我们从Property(name)映射到目标数据库字段

35450

Fluent NHibernate之旅二--Entity Mapping

接着上一篇,今天我们说说ORMMapping。如果你要体验NHibernate强大,首先你就要学会配置,包括SessionFactory和Mapping配置。...类,然后在构造方法完成映射方法,就能完成传统方式映射了。...Map(Expression> expression):与Id类似,对应NHibernateproperty,我这里只是简单映射,还有很多特性,在今后教程中会慢慢使用...映射做好了,接下来我们在NHibernate把映射加到配置。...为了接下来方便,我把FluentMapping都生成到我传统方式Mapping目录,加入到项目,设置成嵌入资源,一切都为了以后教程,换句话说以后教程,我一般都会使用Fluent来进行映射

98090

5000 多字,让你一文掌握 TS 枚举

如果枚举某个成员值使用显式方式赋值,但后续成员未显示赋值, TypeScript 会基于当前成员值加 1 作为后续成员值,比如以下 Enum 枚举成员 C: enum Enum { A,...4.1 用例:模式 在 Node.js 文件系统模块,几个函数具有参数模式。...w(写):允许类别用户更改文件 x(执行):允许类别用户执行文件 这意味着权限可以用 9 表示(3 个类别,每个类别具有 3 个权限): 用户 组 所有 权限 r,w,x r,w,x r,...w,x 8、7、6 5 4 3 2 1 0 虽然在 Node.js 不是这样做,但是我们可以使用一个枚举来处理这些标志enum Perm { UserRead = 1 << 8,...八进制 0o755 对应十进制值是 493。 4.1.1 对位模式替代 模式背后主要思想是存在一组标志,并且可以选择这些标志任何子集。

3.8K10

一文让你彻底掌握 TS 枚举

如果枚举某个成员值使用显式方式赋值,但后续成员未显示赋值, TypeScript 会基于当前成员值加 1 作为后续成员值,比如以下 Enum 枚举成员 C: enum Enum { A,...4.1 用例:模式 在 Node.js 文件系统模块,几个函数具有参数模式。...w(写):允许类别用户更改文件 x(执行):允许类别用户执行文件 这意味着权限可以用 9 表示(3 个类别,每个类别具有 3 个权限): 用户 组 所有 权限 r,w,x r,w,x r,...w,x 8、7、6 5 4 3 2 1 0 虽然在 Node.js 不是这样做,但是我们可以使用一个枚举来处理这些标志enum Perm { UserRead = 1 << 8,...八进制 0o755 对应十进制值是 493。 4.1.1 对位模式替代 模式背后主要思想是存在一组标志,并且可以选择这些标志任何子集。

4.2K20

NHibernate教程

大家好,又见面了,我是你们朋友全栈君。 一、NHibernate简介 在今日企业环境,把面向对象软件和关系数据库一起使用可能是相当麻烦、浪费时间。...对象/关系数据库映射(object/relational mapping (ORM))这个术语表示一种技术,用来把对象模型表示对象映射到基于SQL关系模型数据结构中去。...NHibernate除了能将一张表映射为一个对象,还可以将表间关系变为对象属性。例如学生和课程间多对多关系就可以转化为学生类一个课程集合属性。...配置NHibernate (1)NHibernate配置文件有两种:在桌面应用程序(WinForm)为App.config,在网页应用程序(WebForm)为web.config。...这样情况下不能用软件来辅助产生对应类和XML,这是NHibernate唯一需要费脑筋学地方。

32610

Fluent NHibernate之旅(三)-- 继承

经过了“开篇”和“简单映射”两篇文章,相信大家对Fluent NHibernate 有了一定了解了,FluentNHibernate实际就是对 NHibernate 映射一定扩展,我们能完全利用强类型...从这一篇开始,我们将使用Fluent NHibernate RC 1.0 版来进行演示,先前代码,我会另外进行说明 继承 在OOP,继承作为OO重要特性,如果NHibernate没有对它支持,...,一定看到过了,其实就是把父类、子类所有属性放到一个表,这样做好处就是我们不需要建立其他表,一张表格全搞定,但缺点也显而易见,在属性少情况下或许没有什么,但是多了以后,我们维护、扩展就变得相对麻烦...因为需要标识符,所以我们必须添加一个标识符,我这里使用枚举类型来表示,代码改变成如下: public enum ProductType { Mobile, Book } public...在子类,我们必须制定对应标识符值,这里又出现败笔了,只能设定string类型,My God,变相SetAttribute,我觉得这个已经脱离了Fluent称号了(在RC升级介绍已经说明)。

64280

【Android Gradle 插件】组件化 Gradle 构建脚本实现 ② ( 组件化基本实现 | Project 相关目录 | 定义组件切换标志 | 切换插件导入 | 切换设置应用 ID )

文章目录 一、Project 可获取目录 二、定义模块化与组件化切换标志 三、切换插件导入 四、切换设置应用 ID 在上一篇博客 【Android Gradle 插件】组件化 Gradle...---- 在进行构建脚本实现之前 , 先介绍 下 Project 相关目录 , 调用 Project 实例对象相关函数 , 可以获取 工程根目录 , 构建脚本入口所在目录 , 编译目录 , 等文件目录... , 因此 projectDir 就是工程根目录 ; /** * 包含工程构建脚本目录, 一般是根目录。...*/ File getRootDir(); 二、定义模块化与组件化切换标志 ---- 在 工程根目录 , 创建 common.gradle 构建脚本 , 用于存放一些 扩展变量 ; 定义... , 需要导入 com.android.library 插件 , 模块作为 依赖库 使用 , 是 " Android Library " 类型 Module 模块 ; 在 组件化模式 , 需要导入

1.1K20

C# Enum设计和使用相关技巧

用 2 幂(即 1、2、4、8 等)定义枚举常量。这意味着组合枚举常量各个标志都不重叠。 请考虑为常用标志组合创建一个枚举常量。...此外,在某些情况下,可能会将用于组合标志 OR 运算视为一种高级概念,在简单任务不需要执行此操作。...测试数值是否已设置标志一种简便方法为:在数值和标志枚举常量之间执行按“与”操作,这种方法会将数值标志不对应所有都设置为零,然后测试该操作结果是否等于该标志枚举常量。...将 None 用作值为零标志枚举常量名称。在按 AND 运算,不能使用 None 枚举常量测试标志,因为所得结果始终为零。...但是,您可以在数值与 None 枚举常量之间执行逻辑(不是按)比较,以确定数值是否已设置任何。 如果创建是值枚举而不是标志枚举,创建 None 枚举常量仍十分有用。

1.1K70

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

Fluent Nhibernate(以下简称FN)发展到如今,已经相当成熟了,在Nhibernate书中也相应推荐了使用FN来进行映射配置,之前写FN之旅至今还有很多人会来私信我问题,说来惭愧,从...我们先看下ISessionFactoryMapping配置: private static ISessionFactory CreateSessionFactory() {...,ORM最大好处就是我们可以随意变更我们数据库类型,不需要考虑其类型,这是我选择Nhibernate原因,EF虽然通过扩展能够支持其他数据库,但我相信用EF使用其他数据库的人很少吧。...刚我们测试报错,是因为EmployeeName是个UserName类,NhibernateComponent,我在FN之旅四(上)中有介绍到,默认情况下映射根据字段映射到数据库,所以上面的测试会报错...今天介绍了AutoMapping简单介绍,但在使用您要时刻注意,AutoMapping是有很多限制,比如Id,比如Component等,当然我们可以通过重写DefaultAutomappingConfiguration

92060

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

/github.com/DapperLib/Dapper 五、Entity Framework (EF)(国外) 它是微软封装好一种http://ADO.NET数据实体模型,将数据库结构以ORM模式映射到应用程序...开源地址:https://github.com/dotnet/ef6 六、NHibernate(国外) NHibernate 是一个成熟开源对象关系映射器,适用于 .NET 框架。...开源地址:https://github.com/nhibernate/nhibernate-core 七、ServiceStack/ServiceStack.OrmLite(国外) 简单 .NET 快速...插入/删除/更新/保存和 IsNew 辅助方法 分页请求会自动计算出总记录数并获取特定页面。 简单交易支持。 更好参数替换支持,包括从对象属性获取命名参数。...(V5) 用于记录异常、安装值转换器和将列映射到没有属性属性挂钩。

3.9K41

.NET(C#)有哪些主流ORM框架,SqlSugar,Dapper,EF还是...

前言 在以前一篇文章,为大家分享了《什么是ORM?为什么用ORM?浅析ORM使用及利弊》。...在开发过程参考了NBear与MySoft,吸取了他们一些精华,加入新思想,同时参考EFLambda语法进行大量扩展。该组件已在数百个成熟项目中应用。...完美支持Sql Server(2000至最新版),MySql,Oracle,Access,Sqlite等数据库 支持大量Lambda表达式写法,国产ORM支持度最高,开源中国ORM排行前三 不需要像NHibernate...推荐等级:★★★☆☆ NHibernate NHibernate是一个面向.NET环境对象/关系数据库映射工具。...对象/关系数据库映射(object/relational mapping,ORM)这个术语表示一种技术,用来把对象模型表示对象映射到基于SQL关系模型数据结构中去。

7.7K90

c6000 中断小结

IER(中断使能寄存器) IFR(中断标志寄存器) ISR(中断设置寄存器) ICR(中断清除寄存器) ISTP(中断向量表起始地址寄存器)中断向量程序地址可以通过 ISTP寄存器进行重新...使用 CSL 函数可以使程序更容易理解和维护,同时可以有效避免在编程笔误。...IRQ_clear(IRQ_EVT_TINT0);//对 IFR寄存器进行操作,定时中断标志清零 IRQ_enable(IRQ_EVT_TINT0;//对 IER寄存器进行操作,使能定时中断...IRQ_globalEnable();//对CSR GIE 标志进行配置,标志位置 1; 。。。。。。。。。。。。。...B B0;跳转至 B0 存储地址,执行中断向量表。 5. 执行_c_int00 进行初始化 6. 跳转至 main()执行 csl 函数,IO口,定时器等初始化。

54841
领券