本原理/* This code assumes an IEntity interface that identifies your persistent types. */      /// <summary> /// This static class provides common extension methods for <see cref="IEntity"/> types. /// </summary> public static class EntityExtensions {   /// <summary> /// Gets the real, underlying Entity-type - as opposed to the standard GetType() method, /// this method takes into account the possibility that the object may in fact be an /// NHibernate Proxy object, and not a real object. This method will return the real /// Entity-type, doing a full initialization if necessary. /// </summary> public static Type GetEntityType(this IEntity entity ) {     if(entity is INHibernateProxy)           {var lazyInitialiser = ((INHibernateProxy)entity).HibernateLazyInitializer;var type = lazyInitialiser.PersistentClass;if( type.IsAbstract || type.GetNestedTypes().Length >0 )return Unproxy ( entity ).GetType ();else // we don't need to "unbox" the Proxy-object to get the typereturn lazyInitialiser.PersistentClass ;}return entity.GetType ();}/// <summary>/// Based on the real, underlying Entity-type, this method returns true if the specified/// type matches (or is assignable from) the specified Type./// </summary>public static bool Is < TEntity >( this IEntity entity )  where TEntity : class , IEntity{var entityType = entity.GetEntityType ();var type = typeof ( TEntity );return entityType == type || type.IsAssignableFrom ( entityType );}/// <summary>/// In some cases, you may need the actual object, not just the type - for example, if/// you're going to cast to a type deeper in the hierarchy, you may need to Unproxy/// the object first./// </summary>public static TEntity Unproxy < TEntity >( this TEntity entity ) where TEntity : class , IEntity{return entity is INHibernateProxy ? (TEntity)Service.Session.GetSessionImplementation ().PersistenceContext.Unproxy(entity ):entity ;} }

转载于:https://www.cnblogs.com/kexb/p/6041123.html

nhibernate GetType相关推荐

  1. ActiveRecordBase借助NHibernate的条件获取实体类对象

    ActiveRecordBase.FindAll() 函数其中有一个这样的版本的参数 ActiveRecordBase.FindAll(TargetType As System.Type,Orders ...

  2. NHibernate Issues之1255:联合主键(composite-id)

    本节内容 概览 实例 参考资料 概览 这个系列是以博客形式整理关于NHibernate的Issues.记录一些零碎的小例子,通过零零碎碎的整理,可以巩固自己的知识和扩展我们的知识面.这些小例子也可以适 ...

  3. NHibernate Step By Step(10)-常用的配置属性

    概况 (1)connection.driver_class 数据访问驱动 (2)dialect sql方言 (3)connection.connection_string 数据连接字符串 (4)con ...

  4. NHibernate.Validator 实体验证框架

    在系统开发时,很多情况下都需要对实体进行验证,比如规定某个属性值不能为空,Email的格式或者电话号码的格式是否正确.这种验证不应该只在UI层进行,主要有以下几方面的考虑:      1.如果每个层次 ...

  5. 全自动迁移数据库的实现 (Fluent NHibernate, Entity Framework Core)

    在开发涉及到数据库的程序时,常会遇到一开始设计的结构不能满足需求需要再添加新字段或新表的情况,这时就需要进行数据库迁移. 实现数据库迁移有很多种办法,从手动管理各个版本的ddl脚本,到实现自己的mig ...

  6. NHibernate实例化类部分属性

    NHibernate 为习惯SQL的开发者提供了接口,将查询的结果转变为持久化对象.虽然该方法不是很提倡. GetCurrentSession().CreateSQLQuery(sql) 参数sql就 ...

  7. csharp:Nhibernate Procedure with CreateSQLQuery and GetNamedQuery

    <?xml version="1.0" encoding="utf-8"?> <hibernate-mapping assembly=&quo ...

  8. 设计一套基于NHibernate二级缓存的MongoDB组件(上)

    摘要:NHibernate Contrib 支持很多第三方的二级缓存,如SysCache,MemCache,Prevalence等等,但是没有MongoDB的,于是自己扩展了一个支持MongoDB的缓 ...

  9. 通过NHibernate ORM和CodeDom在任何数据库中自动生成表以生成代码

    目录 介绍 NHibernate NHibernate的优点: NHibernate缺点: NHibernate如何运作? CodeDOM CodeDOM的优点: CodeDOM缺点: 逐步使用代码 ...

最新文章

  1. javascript等待异步线程完成_JavaScript 中的异步原理
  2. 散列表相关题目(线性探测再散列法)
  3. 关系数据库——视图/存储过程/触发器
  4. HTTP协议状态码详解
  5. 计算机程序大赛编程,【小学组】海淀区第三届“智慧杯”中小学生计算机程序设计大赛编程思维类初赛...
  6. 有人说找不到这个免费R绘图教程的数据在哪?
  7. spring security3.x学习(15)_扩展JdbcDaoImpl。
  8. 使用HTML注释标签,超详细的HTML !–…– 注释标签使用实例.pdf
  9. Spark中加载本地(或者hdfs)文件以及SparkContext实例的textFile使用
  10. 51 单片机学习_2.1 独立按键控制LED亮灭
  11. JDK11 JAVA11下载安装与快速配置环境变量教程
  12. Photoshop学习整理---修复画笔工具
  13. NBA2K18手游显示无法连接服务器,nba2k18手游交易被拒绝 | 手游网游页游攻略大全...
  14. java 上传图片 生成缩略图_上传图片同时生成缩略图
  15. 【职场】大公司想招程序员,一般都在什么网站上进行招聘呢?
  16. 工程热力学c语言 朗肯循环第二题,软件工程上机实验报告_相关文章专题_写写帮文库...
  17. MongoDB最新最佳连接工具:Robo 3T
  18. 将B站缓存M4S文件转存为MP4
  19. 利用Calendar简洁制作万年历
  20. 锁仓怎么解_锁仓怎么解锁?解锁的方法是什么?

热门文章

  1. php70w-mysql_Centos Apache+PHP5.6/PHP7.0+mysql5.5
  2. 交际过程的两个基本环节_要客品味 | 人际交往礼仪——交际礼仪的基本原则
  3. linux 系统频率,Linux下CPU的手动频率设定
  4. ionic 支持float吗_oppok7x怎么样值得买吗 oppok7x介绍
  5. 如何禁用和启用mysql外键约束
  6. oracle的nvl和nvl2是什么函数,两者区别
  7. 一个判断session是否过期的小技巧_Java
  8. PTA基础编程题目集6-4求自定类型元素的平均 (函数题)
  9. [原创]商品条码管理与条码打印管理软件的实现
  10. MyBatis入门学习(一)