NHibernate常见问题及解决方法
曾经学过NHibernate的,但是自从工作到现在快一年了却从未用到过,近来要巩固一下却发现忘记了许多,一个“in expected: <end-of-text> (possibly an invalid or unmapped class name was used in the query).”错误查了好半天终于查到了。这篇文章是我转载的NHibernate的常见错误。。。
- hbm.xmlNHibernate文件中版本号可能引起的问题.<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2">
此处的2.2代表了NHibernate的版本号,必须与你安装的NHibernate的产品版本号相符.否则的话,举个例子,若为urn:nhibernate-mapping-2.0,则会出现如下错误: Could not find schema information for the element 'urn:nhibernate-mapping-2.0:hibernate-mapping'. 或是:"NHibernate.Cfg.Environment的类型初始值设定项引发异常". 在对照类中如果属性没有加virtual关键字,可能报
NHibernate.InvalidProxyTypeException: The following types may not be used as proxies:
Model.FriendLink: method set_Description should be virtual
Model.Type: method get_TypeName should be virtual.....
这是一种解决方案是给属性加上virtual关键字,另一种解决方法是在映射文件中加入default-lazy="false".in expected: <end-of-text> (possibly an invalid or unmapped class name was used in the query).
映射文件没有将属性设为"嵌入的资源"或者调方法时表名大小写问题
"Could not find the dialect in the configuration"异常
- 异常描述:
NHibernate.MappingException: Could not compile the mapping document: Model.FriendLink.hbm.xml ---> System.InvalidOperationException: Could not find the dialect in the configuration
在 NHibernate.Dialect.Dialect.GetDialect(IDictionary`2 props)
在 NHibernate.Cfg.Configuration.AddValidatedDocument(NamedXmlDocument doc)
解决方法:
配置文件中xmlns="urn:nhibernate-configuration-2.2"千万不能忘记,确保没有忘掉xmlns="urn:nhibernate-configuration-2.2"就可以解决这个bug.<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2">
<session-factory>
<property name="connection.provider">NHibernate.Connection.DriverConnectionProvider</property>
<property name="use_outer_join">true</property>
<property name="connection.driver_class">NHibernate.Driver.SqlClientDriver</property>
<property name="show_sql">true</property>
<property name="dialect">NHibernate.Dialect.MsSql2005Dialect</property>
<property name="connection.connection_string">Server=.\sqlexpress;initial catalog=SBlog;User Id=sa;Password=1;</property>
<mapping assembly="XMGL.Model"/>
</session-factory>
</hibernate-configuration> "未能未能加载文件或程序集Castle.DynamicProxy2"的异常
异常描述:
System.TypeInitializationException: “NHibernate.Proxy.Poco.Castle.CastleProxyFactory”的类型初始值设定项引发异常。 ---> System.IO.FileNotFoundException: 未能加载文件或程序集“Castle.DynamicProxy2, Version=2.0.3.0, Culture=neutral, PublicKeyToken=407dd0808d44fbdc”或它的某一个依赖项。系统找不到指定的文件。
文件名:“Castle.DynamicProxy2, Version=2.0.3.0, Culture=neutral, PublicKeyToken=407dd0808d44fbdc”
在 NHibernate.Proxy.Poco.Castle.CastleProxyFactory..cctor()解决方法:
该异常的方法比较简单,在程序集中添加引用就可以了.
TimeStamp的使用.
感觉NHibernate对timestamp支持不好,我在sql server 2005定义了一个timestamp类型的列,在映射文件里映射为datetime类型,然后就报:
NHibernate.ADOException: Could not cast the value in field upsize2_0_ of type Byte[] to the Type TimestampType. Please check to make sure that the mapping is correct and that your DataProvider supports this Data Type. ---> System.InvalidCastException: 无法将类型为“System.Byte[]”的对象强制转换为类型“System.IConvertible”。
在 System.Convert.ToDateTime(Object value)
在 NHibernate.Type.TimestampType.Get(IDataReader rs, Int32 index)
在 NHibernate.Type.NullableType.NullSafeGet(IDataReader rs, String name)
搞了半天也没有配好,只能将数据库列改为datetime类型,然后以下面的格式配置映射文件:<id name="ContentId" type="String" unsaved-value="null">
<column name="ContentId" length="36" sql-type="nvarchar" not-null="true" unique="true" index="aaaaaContent_PK"/>
<generator class="assigned"/>
</id>
<timestamp name="Upsizets" column="upsize_ts" />Row was updated or deleted by another transaction (or unsaved-value mapping was incorrect)
引起这个错误的一个原因是数据库锁定,NHibernate默认采用的是乐观锁定.关于NHibernate中乐观锁定以及如何解决错误的信息可以看there .
IDENTITY_INSERT 为OFF
在查询分析器中SET IDENTITY_INSERT 表名 ON
在容器中未找到数据项。容器必须实现 IDataItemContainer 或者具有名为 DataItem 的属性。
<id name="d_name" column="d_name" type="System.String">
<generator class="assigned"/>
</id>主键字段必须为当前表存在的字段The element 'class' in namespace 'urn:nhibernate-mapping-2.2' has invalid child element 'property' in namespace 'urn:nhibernate-mapping-2.2'. List of possible elements expected: 'urn:nhibernate-mapping-2.2:meta urn:nhibernate-mapping-2.2:jcs-cache urn:nhibernate-mapping-2.2:cache urn:nhibernate-mapping-2.2:id urn:nhibernate-mapping-2.2:composite-id'.
NHibernate常见问题及解决方法的更多相关文章
- C#用ado.net访问EXCEL的常见问题及解决方法
C#用ado.net访问EXCEL的常见问题及解决方法,除了像sql server,access常见的数据库,其实Excel文件也可以做为数据库访问. ado.net访问excel的实例: OleDb ...
- NHibernate+MySql (erro 解决方法)
error1. Could not create the driver from NHibernate.Driver.MySqlDataDriver 解决方法:在使用Nhibernate连接Mysq ...
- Nacos 常见问题及解决方法
Nacos 开源至今已有一年,在这一年里,得到了很多用户的支持和反馈.在与社区的交流中,我们发现有一些问题出现的频率比较高,为了能够让用户更快的解决问题,我们总结了这篇常见问题及解决方法,这篇文章后续 ...
- 安装scrapy框架的常见问题及其解决方法
下面小编讲一下自己在windows10安装及配置Scrapy中遇到的一些坑及其解决的方法,现在总结如下,希望对大家有所帮助. 常见问题一:pip版本需要升级 如果你的pip版本比较老,可能在安装的过程 ...
- AppFuse 3常见问题与解决方法
非常长一段时间没做SSH项目了.近期抽出时间看了一下升级到3.x的appfuse,对新版本号使用过程中出现的一些问题进行了排查.汇总例如以下.以备后用.本文原文出处: http://blog.csdn ...
- 项目中NHibernate问题及解决方法
1.用户代码未处理 NHibernate.QueryException Message=Type mismatch in NHibernate.Criterion.SimpleExpressio ...
- python网络爬虫(1)——安装scrapy框架的常见问题及其解决方法
Scrapy是为了爬取网站数据而编写的一款应用框架,出名,强大.所谓的框架其实就是一个集成了相应的功能且具有很强通用性的项目模板. 其实在Linux和 Mac安装,就简单的pip命令即可: pip i ...
- 浅谈Excel开发:九 Excel 开发中遇到的常见问题及解决方法
Excel开发过程中有时候会遇到各种奇怪的问题,下面就列出一些本人在开发中遇到的一些比较典型的问题,并给出了解决方法,希望对大家有所帮助. 一 插件调试不了以及错误导致崩溃的问题 在开发机器上,有时可 ...
- 转:SVN常见问题与解决方法
今天发现一个SVN很奇葩的问题.原来SVN提交的时候也是识别提交路径的大小写的... 发现网上有篇博客总结的挺好的.转载下来,转载出路:http://blog.csdn.net/shinn613/ar ...
随机推荐
- Encountered an unexpected error when attempting to resolve tag helper directive '@addTagHelper' with value '"*, Microsoft.AspNet.Mvc.TagHelpers"'
project.json 配置: { "version": "1.0.0-*", "compilationOptions": { " ...
- Dagger2系列之使用方法
本系列只讲使用方法和使用中遇到的问题,如果还对dagger2还不了解的童鞋儿可以参考文章: http://www.jianshu.com/p/cd2c1c9f68d4 http://www.jians ...
- C++程序员如何转Java
C++程序员如何转Java 忙里偷闲,到了这个时间终于得空写一篇早想写的文章.其实本文的标题有些不太准确,C++程序员写Java代码不是说就非得转行写Java,抛弃C++,而只是多了一个选择而已.两 ...
- 如何在一个页面添加多个不同的kindeditor编辑器
kindeditor官方下载地址:http://kindeditor.net/down.php (入门必看)kindeditor官方文档:http://kindeditor.net/doc.ph ...
- Android Studio同时打开多个项目
Android Studio的默认设置是打开第二个项目时,第一个项目就被自动关闭了,如果要同时打开多个项目,可以点击File->Settings,对Project Opening进行下面的设置: ...
- 记录一次bug解决过程:规范变量名称和mybatis的使用以及代码优化
一.总结 Mybatis中当parameterType为基本数据类型的时候,统一采用_parameter来代替基本数据类型变量. Mybatis中resultMap返回一个对象,resultType返 ...
- 设计模式之单例模式的简单demo
/* * 设计模式之单例模式的简单demo */ class Single { /* * 创建一个本类对象. * 和get/set方法思想一样,类不能直接调用对象 * 所以用private限制权限 * ...
- HTML5 oninput实时监听输入框值变化的完美方案
在网页开发中经常会碰到需要动态监听输入框值变化的情况,如果使用 onkeydown.onkeypress.onkeyup 这个几个键盘事件来监测的话,监听不了右键的复制.剪贴和粘贴这些操作,处理组合快 ...
- HTTP 错误 404.3 - Not Found 由于扩展配置问题而无法提供您请求的页面。如果该页面是脚本 ,请添加处理程序。如果下载文件,请添加 MIME 映射。 IIS站点中添加WCF项目后浏览网站报错解决方法。
vs2013 wcf服务 windows10 家庭中文版 上图中的红色没有出现就按照下面的方法做: 按照上图所示勾选. 刷新上图中你的网站,查看上图右边的内容是否出现,如果出现,再次重新浏览网站,看一 ...
- iOS 10对隐私权限的管理(必须要改否则会crash)
比如访问的摄像头.麦克风等硬件,都需要提前请求应用权限.允许后才可以使用,或者现在要提前声明,虽然以往要求不严格.比如在iOS10中访问通讯录时,强制必须在Info.plist中加入NSContact ...