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

在NHibernate中,如何找到持久POCO类的id属性的名称,知道它的类型?

在NHibernate中,可以通过以下方式找到持久POCO类的id属性的名称和类型:

  1. 首先,需要在POCO类中标记id属性,使用NHibernate提供的注解或者XML映射配置。例如,可以使用[Id]注解标记id属性。
  2. 通过NHibernate的SessionFactory获取到一个ClassMetadata对象,该对象包含了POCO类的元数据信息。
  3. 使用ClassMetadata对象的IdentifierPropertyName方法可以获取到id属性的名称。
  4. 使用ClassMetadata对象的IdentifierType方法可以获取到id属性的类型。

以下是一个示例代码:

代码语言:csharp
复制
using NHibernate;
using NHibernate.Cfg;

// 创建一个Configuration对象,配置NHibernate
var configuration = new Configuration();
configuration.Configure();

// 构建SessionFactory
var sessionFactory = configuration.BuildSessionFactory();

// 打开一个Session
using (var session = sessionFactory.OpenSession())
{
    // 获取POCO类的元数据信息
    var classMetadata = session.SessionFactory.GetClassMetadata(typeof(YourPOCOClass));

    // 获取id属性的名称
    var idPropertyName = classMetadata.IdentifierPropertyName;

    // 获取id属性的类型
    var idPropertyType = classMetadata.IdentifierType;

    // 输出结果
    Console.WriteLine($"id属性的名称:{idPropertyName}");
    Console.WriteLine($"id属性的类型:{idPropertyType}");
}

在上述代码中,需要将YourPOCOClass替换为你实际的POCO类名。通过调用GetClassMetadata方法,可以获取到POCO类的元数据信息。然后,可以使用IdentifierPropertyName方法获取id属性的名称,使用IdentifierType方法获取id属性的类型。

关于NHibernate的更多信息和使用方法,可以参考腾讯云的云数据库RDS for SQL Server产品,该产品提供了基于NHibernate的ORM框架支持,详情请参考:腾讯云数据库RDS for SQL Server

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

相关·内容

NHibernate学习笔记之一,Hello world!

;mapping表示映射NHibernateDemo.WebUI命名空间下所有类型,包含持久以及对应映射文件所在应用程序集名称。...3、编写实体POCO,Plain Old CLR Objects),映射文件包含POCO映射到一个或者多个数据库表元数据信息。User.cs文件如下所示。...持久所有的public属性必须声明为virtual,否则映射不成功。...4、为POCO编写写一个数据库映射文件,其实User.hbm.xml映射文件包含了对象/关系映射(ORM)所需元数据。元数据包含持久声明和属性到数据库映射。...、定义NHibernateHelper帮助,Isession是NHibernate工作单元,它是一个持久化管理器,我们通过ISession来从数据库存取数据。

60020
  • NHibernate详解

    开发过程: 1.新建一个将要持久化.Net对象表 2.构建一个需要被持久.Net 3.构建一个可以让NHibernate知道如何持久化对象属性映射文件...第三步:写映射文件 现在我们有数据表和需要去映射.Net。我们需要一种方式去让NHibernate知道如何从一个映射到另一个。这个任务依赖于映射文件来完成。...第一个有趣标签是class。这里我们将映射类型名称(名,装配件)到我们数据库User表,这里和Hibernate有一点点不同。你将不得不告诉NHibernate从何处提取对象。...NHibernate 遵循和.Net Framework同样规则来加载类型。因此如果你如何指定类型方面有些混淆,请参看.Net Framework SDK。...内嵌generator 标签告诉NHibernate 如何生成主键(它将恰当为你生成主键,不管你指定何种类型,但你必须告诉)。

    68530

    NHibernate介绍「建议收藏」

    相比较而言,有些ORM解决方案需要特殊属性,或者是基于模型对象,这些对象又是从特定中继承而来NHibernate不用特殊修饰就可以让对象和持久化层交互。...要注意是所有需要持久属性必须是虚拟,并且要开启延迟加载,所有数据模型公共方法必须是虚拟,哪怕它们并没有包含到映射文件。 通常来讲,最好把所有的属性都设置为虚拟。...创建NHibernate映射文件 Nhibernate使用XML映射文件来映射POCO到数据库对象。虽然很多案例这可能是一对一关系,但这并不是必定。...class元素表示到单个POCO映射。name表示上面的程序集和命名空间中名,table属性告诉NHibernate数据库哪个表或者视图将被映射。...id元素告诉NHibernate哪个数据库字段和对应对象作为一个唯一键来使用。本例,我们使用Id这个字段。 generator元素告诉NHibernate怎样给新实体来创建唯一ID

    70320

    C#——Nhibernate探索

    这里有两个库;可以分析得出,这两个库是要被引用库拥有对应XML,没找到具体使用该XML方法。所以暂时不去理他。 NHibernate.pdb应该是没有用。估计是作者忘记删除了。...nhibernate-configuration.xsd和nhibernate-mapping.xsd两个文件暂时不知道要干什么用。...一、建立了一个库程序,引用Iesi.Collections.dll和NHibernate.dll两个DLL。  接下来,我们开始建立持久化对象。...调查结果: 对象与数据库映射是保存在XML文件,于是我配置XML映射文件如下。 该XML文件属性,要求设置其生成操作为【嵌入资源】。 但我怕丢失,还给他设置了始终复制属性。...这句话意思是,映射我创建那个库。 我推断,Nherbinate是读这个配置文件,然后到这个程序集里,反射查询那些poco对象。

    49430

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

    ISessionFactory - NHibernate.ISessionFactory: 一个基于单数据库已编译映射缓存,它是持久不变且线程安全(额,这句话是从文档翻译过来)。...它们可能只是一些普通POCO,仅仅是与ISession关联起来了。只要ISession关闭了,这些对象就可以被分离出来然后可以应用层任意地方使用。...实例状态 NHibernate,一个可持久对象有三种不同状态,依据与持久化上下文之间关系不同,其中ISession就是一个持久化上下文。...配置项介绍 在上一篇文章,我们介绍了一下如何设置NHibernate基本配置项,但是并未对配置项进行深入。...数据库连接字符串名称,指的是配置程序配置文件 connectionStrings节点数据连接字符串。

    1.2K20

    2022年了有哪些值得推荐.NET ORM框架?

    对于更高级查询场景,Dapper Extensions 提供了一个谓词系统。这个库目标是通过不需要任何属性或基继承来保持你 POCO 纯净。...与ActiveRecord一样,支持对象和数据库表之间密切关系。 与SubSonic一样,支持使用 T4 模板生成 poco (仅限 V5)。...linq2db LINQ to DB 是最快LINQ数据库访问库,POCO对象和数据库之间提供了一个简单、轻量、快速且类型安全层。...内存高效- 提取并缓存您对象属性、执行上下文、对象映射和 SQL 语句。它在整个转换和执行过程重用它们。 动态和混合- 提供了成熟 ORM 一些高级功能。...这种方法更容易推理您数据访问,从而清楚地知道什么 SQL 什么时间执行,同时减轻意外行为、隐式 N+1 查询和重对象关系映射器 (ORM) 普遍存在泄漏数据访问。

    5.9K11

    Nhibernate_nhibernate与ef区别

    这里是我们要做: 1. 在数据库创建把.Net持久对应表. 2. 创建需要被持久.Net. 3....步骤2:创建.Net: 当我们这样一堆用户时候,我们需要某种对象来保存.NH是通过reflection对象属性来工作,所以我们给需要持久对象添加属性.一个对应于上面数据库结构可以写成这个样子...name"属性值就是我们写.Net属性,column属性值就是在数据库与'Net类属性对应字段名.type属性是可选(如果你没有标明,NH会给出一个最适合),但是推荐做法是带上这个属性...这些嵌入Generator标记告诉NH怎样生成Primary Key(NH很方便就能给你生成一个,不管是什么类型,只要你告诉怎样去做).我们举例子,把设置成"assigned",意思是"...Configuration对象知道所有.Net和后端数据库之间映射关系, Configuration cfg = new Configuration(); cfg.AddAssembly("NHibernate.Demo.QuickStart

    59330

    2022年了有哪些值得推荐.NET ORM框架?

    对于更高级查询场景,Dapper Extensions 提供了一个谓词系统。这个库目标是通过不需要任何属性或基继承来保持你 POCO 纯净。...与ActiveRecord一样,支持对象和数据库表之间密切关系。 与SubSonic一样,支持使用 T4 模板生成 poco (仅限 V5)。...linq2db LINQ to DB 是最快LINQ数据库访问库,POCO对象和数据库之间提供了一个简单、轻量、快速且类型安全层。...内存高效- 提取并缓存您对象属性、执行上下文、对象映射和 SQL 语句。它在整个转换和执行过程重用它们。 动态和混合- 提供了成熟 ORM 一些高级功能。...这种方法更容易推理您数据访问,从而清楚地知道什么 SQL 什么时间执行,同时减轻意外行为、隐式 N+1 查询和重对象关系映射器 (ORM) 普遍存在泄漏数据访问。

    3.8K20

    Nhibernate_juan benet

    在数据库创建把.Net持久对应表. 2. 创建需要被持久.Net. 3. 创建映射文件,以告诉NH怎样持久化这些属性. 4....步骤2:创建.Net: 当我们这样一堆用户时候,我们需要某种对象来保存.NH是通过reflection对象属性来工作,所以我们给需要持久对象添加属性.一个对应于上面数据库结构可以写成这个样子...让我们暂时跳过”id” tag,先说property节点.”name”属性值就是我们写.Net属性,column属性值就是在数据库与’Net类属性对应字段名.type属性是可选(如果你没有标明...这些嵌入Generator标记告诉NH怎样生成Primary Key(NH很方便就能给你生成一个,不管是什么类型,只要你告诉怎样去做).我们举例子,把设置成”assigned”,意思是”...Configuration对象知道所有.Net和后端数据库之间映射关系, Configuration cfg = new Configuration(); cfg.AddAssembly(“NHibernate.Demo.QuickStart

    37750

    NHibernate总结

    NHibernate不仅仅管理.NET 到数据库表映射(包括.NET 数据类型到SQL 数据类型映射),还提供数据查询和获取数据方法,大幅度减少我们开发时人工使用SQL和ADO.NET处理数据时间...,其中People实体字段要设置为virtual。每个文件详细代码在下面介绍 (2)     NH.Data层引用Nhibernate相关DLL ?...我们可以该文件上点击右键选择属性进行修改。 (2)     NHibernateHelper.cs数据操作辅助 我们现在可以开始NHibernate了。...virtual,要不然会报错 (4)     下面我们开始为People实体进行数据库表映射配置People.hbm.xml NHibernate知道怎样去加载和存储持久对象。...这正是NHibernate映射文件发挥作用地方。映射文件包含了对象/关系映射所需元数据。元数据包含持久声明和属性到数据库映射。

    92540

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

    数据库访问库, POCO 对象和数据库之间提供了一个简单、轻量、快速且类型安全层。...异步或同步,选择权您。(又名异步)(V6) 与严格未修饰 POCO 或归属几乎 POCO 一起使用。 易于配置,包括开箱即用流畅配置。...插入/删除/更新/保存和 IsNew 辅助方法 分页请求会自动计算出总记录数并获取特定页面。 简单交易支持。 更好参数替换支持,包括从对象属性获取命名参数。...通过使用 DynamicMethod 生成消除 Linq 和快速属性分配来获得出色性能。 查询语言是好 ole SQL。 包括一个低摩擦 SQL 构建器,使编写内联 SQL变得更加容易。...包括 T4 模板以自动为您生成 POCO 。(V5) 用于记录异常、安装值转换器和将列映射到没有属性属性挂钩。

    4.1K42

    NHibernate 代码映射实体

    NHibernate 代码映射实体 关于代码映射 NHibernate 3.2 自带了代码映射机制, 作为 xml 映射之外一种映射方式, 由于推出时间比较晚, 所以资料相对比较少, 而且与社区版...下面就通过一个实例来说明怎么使用 NHibernate 自带代码映射。 实体关系 要映射关系图如下: ?...; 标识映射 使用 Id 函数映射标识, NHibernate 提供了内置工具来简化代码: Id( m => m.Id, map => { map.Column("id...使用 Property 函数映射属性NHibernate 提供了内置工具来简化代码: Property( m => m.Name, map => { map.Column...Attribute Mapping 相比, 对原来 POCO 实体没有污染 (Attribute) ; NHibernate 自带, 可以说是一等公民, 而 Fluent Mapping 是第三方维护

    90510

    Nhibernate入门与demo

    其中:李永京博客http://www.cnblogs.com/lyj/tag/NHibernate/  内容最为丰富。而且李哥博客里面学了很多东西,在此致谢!      ...通俗讲,就是我们操作实体,然后让ORM框架自动映射到数据库。      而Nhibernate就是:.Net环境下实现ORM技术一个框架!     ...Nhibernate带给我们就是:对于开发者通常数据持久化相关编程任务,解放其中95%! 第三个问题:      这是本文关键,是怎么搭建呢?     ...      1、    意思: property name指的是:User属性名字...class name="MyWeb.WebTemp.Model.User,MyWeb.WebTemp.Model" table="Hksj_User" lazy="false">          这个是配置名称

    35430

    NHibernate教程

    大家好,又见面了,我是你们朋友全栈君。 一、NHibernate简介 今日企业环境,把面向对象软件和关系数据库一起使用可能是相当麻烦、浪费时间。...NHibernate除了能将一张表映射为一个对象,还可以将表间关系变为对象属性。例如学生和课程间多对多关系就可以转化为学生一个课程集合属性。...二、NHibernate使用步骤 1.为系统引入NHibernate库,并且配置NHibernate; 2.新建一个将要持久化.Net对象表; 3.构建一个需要被持久.Net; 4.构建一个可以让...NHibernate知道如何完成ORM映射XML文件; 5.使用NHibernateAPI来编程 三、NHibernate使用 1....配置NHibernate (1)NHibernate配置文件有两种:桌面应用程序(WinForm)为App.config,在网页应用程序(WebForm)为web.config。

    36910

    设计面向DDD微服务

    ,此层不应直接依赖基础设施,这意味着一个重要规则是领域模型实体应为POCO。...领域实体不应直接依赖于任何数据访问基础框架(EF、NHibernate),理想情况下,您域实体不应继承自或实现任何基础设施定义任何类型。...领域模型遵循持久性无感知原则很重要,但也不应忽略持久性问题 理解物理数据模型以及如何映射到您实体对象模型仍然非常重要,否则你设计将会是空中楼阁。...The infrastructure layer 基础设施层: 定义如何将最初保存在领域实体数据持久化到数据库或者其他存储结构过程。...一个示例是使用Entity Framework Core代码实现存储库模式: 该存储库模式使用DBContext将数据持久存储关系数据库

    65050

    Fluent NHibernate之旅二--Entity Mapping

    ,然后构造方法完成映射方法,就能完成传统方式映射了。...Map(Expression> expression):与Id类似,对应NHibernateproperty,我这里只是简单映射,还有很多特性,今后教程中会慢慢使用...映射做好了,接下来我们NHibernate把映射加到配置。...二、使用自定义类型映射实体属性 NHibernate支持我们用自定义类型来映射属性,但因为我是初学,我真的不会,当然我在网上找到了相关资料,在此也不多说,就说说Fluent方式吧,我映射自定义属性时候...Order实体,我们看到了订单状态我用了OrderState枚举类型,数据库存储类型为tinyint,对于映射,我们只需要: public class OrderMap : ClassMap<Order

    1K90
    领券