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

从NHibernate元数据中获取类字段名称和表列名称

从NHibernate元数据中获取类字段名称和表列名称,可以通过以下步骤实现:

  1. 获取NHibernate的ISessionFactory实例。
  2. 通过ISessionFactoryGetClassMetadata()方法获取IClassMetadata实例。
  3. 通过IClassMetadataPropertyNames属性获取类字段名称数组。
  4. 通过IClassMetadataTableName属性获取表名。
  5. 通过IClassMetadataGetColumnNames()方法获取表列名称数组。

以下是一个示例代码:

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

namespace NHibernateExample
{
    class Program
    {
        static void Main(string[] args)
        {
            // 配置NHibernate
            Configuration config = new Configuration();
            config.Configure();
            config.AddAssembly(typeof(Program).Assembly);

            // 获取ISessionFactory实例
            ISessionFactory sessionFactory = config.BuildSessionFactory();

            // 获取IClassMetadata实例
            IClassMetadata classMetadata = sessionFactory.GetClassMetadata(typeof(MyEntity));

            // 获取类字段名称数组
            string[] propertyNames = classMetadata.PropertyNames;
            Console.WriteLine("类字段名称:");
            foreach (string propertyName in propertyNames)
            {
                Console.WriteLine(propertyName);
            }

            // 获取表名
            string tableName = classMetadata.TableName;
            Console.WriteLine("表名:" + tableName);

            // 获取表列名称数组
            string[] columnNames = classMetadata.GetColumnNames();
            Console.WriteLine("表列名称:");
            foreach (string columnName in columnNames)
            {
                Console.WriteLine(columnName);
            }
        }
    }
}

在上面的示例代码中,我们通过Configuration对象配置了NHibernate,并使用BuildSessionFactory()方法获取ISessionFactory实例。然后,我们使用ISessionFactoryGetClassMetadata()方法获取IClassMetadata实例,并通过IClassMetadataPropertyNames属性获取类字段名称数组,通过IClassMetadataTableName属性获取表名,通过IClassMetadataGetColumnNames()方法获取表列名称数组。最后,我们将这些信息输出到控制台。

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

相关·内容

如何jdbc获取数据库建表语句信息(表字段名称字段类型表字段注释信息表字段长度等等)

* 如何jdbc获取数据库建表语句信息(表字段名称/表字段类型/表字段注释信息/表字段长度等等) * 1,表字段名称 * 2,表字段类型 * 3,表字段注释信息 这里介绍3种方式,如下:...第二种方式:直接jdbc数据库连接Connection实例获取 三种方式获取数据有一些区别 第一种方式不能获取到的信息比较丰富,但是唯一不能获取的是表字段备注信息,其他信息基本都有了 第二种方式可以获取完整的建表语句...,但是不太好用,需要自己解析表字段,如果自己可以解析的话,建议使用 第三种方式能够获取到表字段备注信息,但是获取不到表字段对应的java类型 do not talk,show me code. package...获取数据库建表语句信息(表字段名称/表字段类型/表字段注释信息/表字段长度等等) * 1,表字段名称 * 2,表字段类型 * 3,表字段注释信息 */ @Slf4j public class How2ObtainFieldInfoFromJdbc...create table user_pop_info how2ObtainFieldInfoFromJdbc.method2(); // 第二种方式:直接jdbc数据库连接Connection实例获取

4.6K10

NHibernate详解

NHibernate 为你处理这些,远胜于你不得不写SQL去数据库存取对象。你的代码仅仅对象关联,NHibernat 自动产生SQL语句,并确保对象提交到正确的表字段中去。...这里我们将映射类型名称(名,装配件)到我们数据的User表,这里Hibernate有一点点的不同。你将不得不告诉NHibernate从何处提取对象。...在这个例子里我们装配件(最后编译的DLL文件名称NHibernate.Examples 装载NHibernate.Examples.QuickStart.User 。...简要看一下,你将发现NHibernate所要做的工作。name属性的值正是我们.Net 的属性,column属性值将是我们数据库里的字段。...如果你执意要NHiberante为你生成主键,你感兴趣于设定uuid.hexuuid.string(文档获取更多信息) 提示:如果你使用Visual Studio.Net 去编译的话,请将user.hbm.xml

61430

NHibernate学习笔记之一,Hello world!

NHibernate是一个面向.NET环境的对象/关系数据库映射框架,主要应用在数据持久层,其它的ORM框架一样用来把对象模型表示的对象映射到基于SQL的关系模型数据结构中去。...;mapping表示映射NHibernateDemo.WebUI命名空间下的所有类型,包含持久化以及对应映射文件所在的应用程序集名称。...3、编写实体(POCO,Plain Old CLR Objects),映射文件包含POCO映射到一个或者多个数据库表的数据信息。User.cs文件如下所示。...4、为POCO编写写一个数据库映射文件,其实User.hbm.xml映射文件包含了对象/关系映射(ORM)所需的数据数据包含持久化的声明属性到数据库的映射。...、定义NHibernateHelper的帮助,Isession是NHibernate的工作单元,它是一个持久化管理器,我们通过ISession来数据存取数据

58720

使用动态SQL(七)

此列数据包括ODBC数据类型信息,以及客户端类型InterSystems Objects属性的起源以及类型信息。...%SQLQuickLoad这将返回所选字段的两个表列表。第一列数据表列出了列定义信息:显示标题%SQL.StatementColumn属性描述Column NamecolName列的SQL名称。...如果SELECT项是子查询,则不会列出任何架构名称。CTypeclientType客户端数据类型的整数代码。第二列数据表列出了扩展列信息。...12: RowIDisRowIdROWIDIdentity字段返回Y.扩展列信息数据表列出了每个选定字段的列名称(SQL名称或列别名),链接属性(链接的持久性类属性)类型数据类型)。...SET i=i+1 } WRITE "End of metadata"}执行Execute之后,无法查询结果集数据获取参数数据。在结果集中,所有参数均已解析。

83320

NHibernate总结

NHibernate不仅仅管理.NET 数据库表的映射(包括.NET 数据类型到SQL 数据类型的映射),还提供数据查询获取数据的方法,大幅度减少我们开发时人工使用SQLADO.NET处理数据的时间...,其中People实体字段要设置为virtual。每个文件的详细代码在下面介绍 (2)     在NH.Data层引用Nhibernate相关的DLL ?...首先,我们要从ISessionFactory获取一个ISession(NHibernate的工作单元)。ISessionFactory可以创建并打开新的Session。...virtual,要不然会报错 (4)     下面我们开始为People实体进行数据库表映射配置People.hbm.xml NHibernate要知道怎样去加载存储持久化的对象。...这正是NHibernate映射文件发挥作用的地方。映射文件包含了对象/关系映射所需的数据数据包含持久化的声明属性到数据库的映射。

90740

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

前言 上一篇《C# 数据操作系列 - 11 NHibernate 配置结构介绍》 介绍了Nhibernate里的配置内容。这一篇将带领大家了解一下如何使用NHIbernate。...assembly:指定映射对象所在的assembly,一般情况指的是项目名称 namespace:所在命名空间 default-access:可选的,默认是property,表示NHibernate的读取数据列的策略...,默认情况Property 读取 default-lazy:可选的,默认是true,是否启动延迟加载 1.2 class的配置 一般情况下,class节点只需要指定nametable就可以了。...1.2.1 id 任何一个映射都必须声明一个数据表的主键,大多数也必须有一个唯一标示字段用来区分不同的实例。...column:对应数据表的列名 type:数据的类型 1.2.3 many-to-one 在Nhibernate,多对一的配置是在一的一端,表示该类有一个外键导航。

1.1K20

NET中小型企业项目开发框架系列(一个)

当时的前端,我们开发了基于Net一组结构sprint.NET+NHibernate+MVC+WCF+EasyUI等中小型企业级系统开发平台,如今把整个开发过程的步步进展整理出来大家分享,这个系列可能有点长...界面层: ComplaintManageSystem:基本的MVCLigerUI实现的界面部分 TZHSWEET.UI:关于MVC公共UI定义的部分 公共库部分: 我们的目标是“0”增删改查的数据訪问层实现...,主要是靠Nhibernate的定义通用的增删改,然后其它继承增删改查接口对应的自己定义的子类的接口,实现拓展 首先,我们曾经的写代码经验知道,我们的Dao主要是做增删改查等方面,我们就先定义一个公共方法的接口叫做...仅仅须要传入Name属性的名称值就可以; //这个Name是相应的实体的属性名称,非数据字段名。...非数据字段名。

55610

NHibernate 缓存

, 只有第一次调用 Get 方法加载实体时, 有 sql 输出, 数据库取出了数据, 第二次加载则没有 sql 数据, 也就是利用了 session 的一级缓存。..., 才数据库加载, 也就是说, Load 方法是延迟加载的。...[Categories] this_ 二级缓存选项 NHibernate 二级有几个配置选项, 他们分别是: 实体以及集合二级缓存配置选项 指定: <class-cache class="<em>类</em><em>名称</em>"...,但不从二级缓存读数据 Get:二级缓存读数据,仅在数据更新时向二级缓存写数据 Normal:默认方式。...二级缓存读/写数据 Refresh:向二级缓存写数据,想不从二级缓存读数据,通过在配置文件设置 cache.use_minimal_puts数据读取数据时,强制二级缓存刷新 CacheRegion

59011

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

,MySQL-FRONT ,Connector/Net(选择.Net&Mono) Nhibernate包可以在VS2015下载 ,对MySql操作,我用的是MySQL-FRONT,注意要想实现和数据库的链接...先写一个简单的给你定义的数据添加一条元素的代码:(不使用Nhibernate的) 前提:先把该用的dll文件,添加到引用里面去不然,会连接不成功,之前下载的Connector/Net(选择.Net&...,新建一个数据库,名字随意,添加一个表,名字随意,然后添加两个字段,一个字段名称为name,一个为age,好了表建好之后,我们开始使用很简单很简单一个C#连接MySql数据库的代码 using System...然后我们在工程下面新建两个文件夹:Model文件夹用来存放数据库表映射,还有一个Manger用来存放对数据库执行增删改查操作的。...帮助,使用Nhibernate连接数据库,用来得到sessionFactory,然后使用sessionFactory里面的session去操作数据库,代码如下: using System; using

1.4K30

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

NHibernate通过ADO.NET 建立访问数据库的连接,然后封装了一个Transaction(事务)工厂一个Session工厂。...ISession - NHibernate.ISession: 一个单线程、短生命周期的对象,表示应用程序和数据持久化之间一个连接。...状态分为以下三种: transient 暂存的、临时的 该状态的对象并没有被持久化上下文捕获到,简单来讲就是刚被创建,还没有数据库/持久化上下文中获取到主键信息。...这种状态通常是数据获取数据或者新建的数据附加到了上下文中。 detached 游离态 该状态的对象是从上下文中分离出来的,有了数据库主键,曾经或现在仍然有一条数据库记录与之对应。...数据库连接字符串的名称,指的是配置在程序的配置文件 connectionStrings节点的数据连接字符串。

1.2K20

记录

在访问相应字段之前,不会评估记录的值。 记录的值最多被评估一次。 表达式的结果是一个带有空数据记录的记录值。...记录字段的顺序由它们在record-initializer-expression 中出现的顺序定义。 指定的每个字段名称在记录中都必须是唯一的,否则会出错。名称使用顺序比较进行比较。...相同的两条记录在获取字段时会产生不同的结果: 复制 Record.FieldNames([ x = 1, y = 2 ]) // [ "x", "y" ] Record.FieldNames([ y...表的类型决定了表中所有行的长度、表列名称表列的类型以及表键的结构(如果有)。 表没有文字语法。提供了几个标准库函数来构造二进制值。...例如,#table可用于行列表列标题名称列表构造表: 复制 #table({"x", "x^2"}, {{1,1}, {2,4}, {3,9}}) 上面的例子构造了一个包含两列的表,两列都是type

48710

C#基础深入学习01

数组 Array 的属性 下表列出了 Array 中一些最常用的属性: 序号 属性 & 描述 1 IsFixedSize 获取一个值,该值指示数组是否带有固定大小。...params 的使用格式为: public 返回类型 方法名称( params 类型名称[] 数组名称 ) 结构体(Struct) 在 C# ,结构体是值类型数据结构。...在 C# 的结构与传统的 C 或 C++ 的结构不同。C# 的结构有以下特点: 结构可带有方法、字段、索引、属性、运算符方法事件。 结构可定义构造函数,但不能定义析构函数。... vs 结构 结构有以下几个基本的不同点: 是引用类型,结构是值类型。 结构不支持继承。 结构不能声明默认的构造函数。 结构体的构造函数,必须为结构体所有字段赋值,的构造函数无此限制。...结构体声明的字段无法赋予初值,可以。

14710

NHibernate 缓存

, 只有第一次调用 Get 方法加载实体时, 有 sql 输出, 数据库取出了数据, 第二次加载则没有 sql 数据, 也就是利用了 session 的一级缓存。..., 才数据库加载, 也就是说, Load 方法是延迟加载的。...[Categories] this_ 二级缓存选项 NHibernate 二级有几个配置选项, 他们分别是: 实体以及集合二级缓存配置选项 指定: <class-cache class="<em>类</em><em>名称</em>"...,但不从二级缓存读数据 Get:二级缓存读数据,仅在数据更新时向二级缓存写数据 Normal:默认方式。...二级缓存读/写数据 Refresh:向二级缓存写数据,想不从二级缓存读数据,通过在配置文件设置cache.use_minimal_puts数据读取数据时,强制二级缓存刷新 CacheRegion

43310

C# 数据操作系列 - 10 NHibernate初试

在后续使用,通过映射关系生成SQL语句(这一步跟EF是一致的),进而操作数据或者查询数据。 2. 初探 NHibernate 2.1 准备 先来个控制台项目,我起名为dataprovider。...C# 项目中,除了Web类型的项目,每个项目的主配置文件的名称都是App.config,这是一个固定名称。 文件内容如下: 这段代码的含义是,在config文件添加一个 hibernate-configuration结点,结点的解析由NHibernate.Cfg.ConfigurationSectionHandler...2.3 获取ISessionFactory 然后获取一个ISessionFactory: Configuration cfg = new Configuration(); var sessionFactory...sessionFactory用来创建一个访问数据库的Session 2.4 增删改查 先来个简单的示例: public class Cat { public virtual string Id

81030

MySQL笔记

它的主要功能包括数据定义、数据操作、数据库的运行管理、数据库的建立维护等几个方面 数据库类型 关系型数据库 关系型数据库是建立在关系模型基础上的数据库,借助于集合代数等数学概念方法来处理数据数据...,添加外键 create table 表名( 外键列名 类型 constraint 外键名称 foreign key (表列名称) references 主键名称(主表列名称) ) 删除外键...(外键字段名称) references 主表名称(主表列名称) 级联操作 添加级联操作 alter table 表名 add constraint 外键名称 foreign key (外键字段名称...int:代表列的编号,1开始 String:代表列名称 PreparedStatement:预编译执行sql的对象 参数使用**?...,可以放在任意目录下 加载配置文件:Properties 通过工厂获取数据库连接池对象: DruidDataSourceFactory.createDataSource(数据源) 获取连接:getConnection

97910

20个代码生成框架

它可以帮助ASP、JSP、PHP开发人员快速的开发简单的数据库维护程序。无需任何编码,只需将数据库结构导入到CodeMaker并做简单的设置,CodeMaker即可生成完整的数据库操作页面。...,并生成Bean对应的配置文件。...它允许您使用象 JavaDoc 标记之类的东西来向诸如、方法字段之类的语言特征添加元数据。随后,它利用这些额外的数据来生成诸如部署描述符源代码之类的相关文件。...XDoclet 继承了 JavaDoc 引擎的思想,允许根据定制 JavaDoc 标记生成代码其他文件。当然,XDoclet 也可以访问整个解析树。这样,它就可以访问的包结构的方法。...内容标记打印当前解析树上下文的片段,如名称、方法名称参数,等等。

4.5K50

20个代码生成框架 (.NET JAVA)

它可以帮助ASP、JSP、PHP开发人员快速的开发简单的数据库维护程序。无需任何编码,只需将数据库结构导入到CodeMaker并做简单的设置,CodeMaker即可生成完整的数据库操作页面。...,并生成Bean对应的配置文件。...它允许您使用象 JavaDoc 标记之类的东西来向诸如、方法字段之类的语言特征添加元数据。随后,它利用这些额外的数据来生成诸如部署描述符源代码之类的相关文件。...XDoclet 继承了 JavaDoc 引擎的思想,允许根据定制 JavaDoc 标记生成代码其他文件。当然,XDoclet 也可以访问整个解析树。这样,它就可以访问的包结构的方法。...内容标记打印当前解析树上下文的片段,如名称、方法名称参数,等等。

4K60

Sentry 监控 - Discover 大数据查询分析引擎

保存的查询可供组织的任何人查看,并且不限于用户帐户。 构建新查询 Discover 主页,您可以通过三种方式构建查询。...输入显示名称 单击Save(保存) 应用新的搜索条件或表列来修改查询结果。保存查询并分配自定义显示名称。有关完整的详细信息,请参阅有关查询生成器的文档。...导出 CSV 如果您想将数据带到别处,请单击 “Export” 以获取 CSV 文件。 对于大型导出,一旦准备就绪,您将收到一封包含下载链接的电子邮件。这将需要在 Sentry 下载页面上进一步验证。...通过 Discover 发现趋势 Discover 是一个强大的查询引擎,允许您跨项目应用程序查询所有错误数据。...通过 Errors Discover Discover 的真正强大之处在于它能够查询所有错误数据,因此您不再局限于 issues 或 projects 的上下文,并且可以揭示所有应用程序的趋势见解。

3.5K10
领券