(转)NHibernate+MySql常见问题
http://blog.51cto.com/4837471/1567675
版本:
NHibernate :NHibernate 4.0.1GA
MySql:MySql 5.0.1
常见问题一:
“NHibernate.HibernateException”类型的未经处理的异常在 NHibernate.dll 中发生
其他信息: Could not create the driver from NHibernate.Driver.MySqlDataDriver.
解决方案:
把MySql.Data.dll程序集引入到项目中,这个问题就解决了。原因在于找不到驱动。
常见问题二:
异常:已引发: "Duplicate class/entity mapping MySqlLib.TyAsset" (NHibernate.DuplicateMappingException)
引发了一个 NHibernate.DuplicateMappingException: "Duplicate class/entity mapping MySqlLib.TyAsset"
解决方案:
这个问题是因为在如下的代码的问题:
<?xml version="1.0" encoding="utf-8"?><hibernate-configuration xmlns="urn:nhibernate-configuration-2.2" > <session-factory name="_sessionFactory"> <property name="connection.driver_class">NHibernate.Driver.MySqlDataDriver</property> <property name="connection.connection_string"> User Id=root;Password=123456;Host=127.0.0.1;Port=3306;Database=test;Persist Security Info=True <!--User Id=itywuser;Password=qwe#123;Host=192.168.72.201;Port=3316;Database=tysx;Persist Security Info=True--> </property> <property name="dialect">NHibernate.Dialect.MySQLDialect</property> <property name="show_sql">true</property> <property name="hbm2ddl.keywords">none</property> <property name="hbm2ddl.auto">create</property> <mapping assembly="MySqlLib"/> </session-factory></hibernate-configuration>
因为hibernate.cfg.xml文件中已经添加了<mapping assembly="xxxx"/>,如果你在加载这个文件时添加了如下代码就会出现这个问题:
ISessionFactory factory = (new Configuration().Configure("D:\\实习文档\\ASP数据库\\TestMySqlLib\\Test\\MySql.cfg.xml")).AddAssembly("TestMySqlLib").BuildSessionFactory();
重复的加载了程序集。
常见问题三:
异常:已引发: "Could not compile the mapping document: MySqlLib.TyAsset.hbm.xml" (NHibernate.MappingException)
引发了一个 NHibernate.MappingException: "Could not compile the mapping document: MySqlLib.TyAsset.hbm.xml"
线程: <无名称>[11980]
解决方案:
这个问题出在hbm.xml文件是毋庸置疑的,代码如下:
<hibernate-mapping assembly="TestMySqlLib" xmlns="urn:nhibernate-mapping-2.2" default-lazy="false"> <class name="Student" table="student" lazy="false">
<!--正确的做法--><hibernate-mapping assembly="TestMySqlLib" xmlns="urn:nhibernate-mapping-2.2" default-lazy="false"> <class name="TestMySqlLib.Student,TestMySqlLib" table="student" lazy="false">
这个官方文档中有详细的说明,网络上也有很多文章说这个问题,我就不再这里赘述这个原因了。
常见问题四:
“System.ArgumentException”类型的未经处理的异常在 System.Data.dll 中发生
其他信息: 列“ReservedWord”不属于表 ReservedWords。
解决方案:
在hibernate.cfg.xml文件中添加数据源的一条属性设置:如下
<property name="hbm2ddl.keywords">none</property>
原因请参看hbm2ddl.keywords的详解,文章链接:http://www.cnblogs.com/Byrd/archive/2012/01/09/2317230.html
常见问题五:
“NHibernate.Cfg.HibernateConfigException”类型的未经处理的异常在 NHibernate.dll 中发生 其他信息: An exception occurred during configuration of persistence layer.
解决方案:
这个问题主要出在一下代码中:
ISessionFactory factory = (new Configuration().Configure()).AddAssembly("TestMySqlLib").BuildSessionFactory();
第一:保证你的配置文件名为:hibernate.cfg.xml
第二:设置文件hibernate.cfg.xml文件的输出属性,为始终复制。因为采用上面方式加载配置文件,会到debug目录下去找名字为hibernate.cfg.xml的文件。关于配置文件加载方式可在我的博客中找相关文章。
常见问题六:
“NHibernate.MappingException”类型的未经处理的异常在 NHibernate.dll 中发生
其他信息: Could not add assembly testMySqlLib
解决方案:
这个问题刚好和第二问题刚好相反,没有添加程序集,有两个方法可以解决这个问题
第一:
在hibernate.cfg.xml文档中添加<mapping assembly="xxxx"/>
第二:
在加载hibernate.cfg.xml文件时用如下代码:
ISessionFactory factory = (new Configuration().Configure("D:\\实习文档\\ASP数据库\\TestMySqlLib\\Test\\MySql.cfg.xml")).AddAssembly("xxxx").BuildSessionFactory();
常见问题七:
异常:已捕获: "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ' Sex varchar, Age int, Addr varchar, Phone varchar, primary key (Stuno))' at line 1" (MySql.Data.MySqlClient.MySqlException)
线程: <无名称>[2884]
解决方案:
该问题尚未查找到解决方案,如果您和我一样碰到这个问题并且已经解决了或者你有自己的看法,请在下面留言告诉我还有更多的网友,我们一起解决这个问题。谢谢。
常见问题八:
异常:已引发: "未能加载文件或程序集“NHibernate.XmlSerializers, Version=3.0.0.4000, Culture=neutral, PublicKeyToken=aa95f207798dfdb4”或它的某一个依赖项。系统找不到指定的文件。" (System.IO.FileNotFoundException)引发了一个 System.IO.FileNotFoundException: "未能加载文件或程序集“NHibernate.XmlSerializers, Version=3.0.0.4000, Culture=neutral, PublicKeyToken=aa95f207798dfdb4”或它的某一个依赖项。系统找不到指定的文件。"
线程: <无名称>[8276]
解决方案:
该问题尚未查找到解决方案,如果您和我一样碰到这个问题并且已经解决了或者你有自己的看法,请在下面留言告诉我还有更多的网友,我们一起解决这个问题。谢谢。
常见问题九:
异常:已引发: "No persister for: StudentLib.Student" (NHibernate.MappingException)
引发了一个 NHibernate.MappingException: "No persister for: StudentLib.Student"
线程: <无名称>[18324]
解决方案:
一般这种是因为没有把student.hbm.xml文件设置为嵌入资源。只要把映射文件设置为嵌入资源就可以解决这个问题了。
(转)NHibernate+MySql常见问题的更多相关文章
- 30.Mysql常见问题和应用技巧
30.Mysql常见问题和应用技巧30.1 忘记Mysql的root密码30.2 如何处理MyISAM存储引擎的表损坏 30.2.1 方法一:使用myisamchk工具 30.2.2 方法二:使用SQ ...
- (转)【面试】【MySQL常见问题总结】【03】
[常见面试问题总结目录>>>] [面试][MySQL常见问题总结][03] 2016-05-29 22:20 阅读(8244) 评论(2) [面试][MySQL常见问题总结][02] ...
- NHibernate+MySql (erro 解决方法)
error1. Could not create the driver from NHibernate.Driver.MySqlDataDriver 解决方法:在使用Nhibernate连接Mysq ...
- Mysql常见问题及优化
本文将就以下三个问题进行展开: 1.库表设计 2.慢 SQL 问题 3.误操作.程序 bug 时怎么办 一.库表设计 1.1 引擎选择 在 mysql 5.1 中,引入了新的插件式存储引擎体系结构,允 ...
- mysql常见问题
Q:ERROR 2003 (HY000): Can't connect to MySQL server on '192.168.1.111' (61)A: 找到my.cnf,把#bind-addres ...
- MySQL常见问题汇总(原创)
本文记录了使用Mysql时遇到的问题,持续更新中... 1.在windows命令行下登录mysql时报错: C:\Program Files\MySQL\MySQL Server 5.0\bin> ...
- NHibernate的常见问题及解决方案
问题1 : 异常:in expected: <end-of-text> (possibly an invalid or unmapped class name was used in th ...
- Mysql 常见问题
------------------------------------------------ ------------------------------------------------ -- ...
- Nhibernate + MySQL 类型映射
用SQLyog工具创建表 然后用自动映射工具NHibernate Mapping Generator对表做自动映射,得到 这个是可视化界面,后面有对应的代码. using System; using ...
随机推荐
- Mysql数据类型DECIMAL(M,D)用法
在MySQL数据类型中,例如INT,FLOAT,DOUBLE,CHAR,DECIMAL等,它们都有各自的作用,下面我们就主要来介绍一下MySQL数据类型中的DECIMAL类型的作用和用法. 一般赋予浮 ...
- Page Cache, the Affair Between Memory and Files.页面缓存-内存与文件的那些事
原文标题:Page Cache, the Affair Between Memory and Files 原文地址:http://duartes.org/gustavo/blog/ [注:本人水平有限 ...
- Android Studio快捷键Ctrl+Shift+F不能用,全局搜索不能用;
AS全局搜索Ctrl+Shift+F突然就不能用了,在AS找半天没有找到问题,原因竟然是和搜狗输入法的简繁切换冲突了:下面有图把简繁切换关闭或更换快捷键后,as的全局搜索就能用了:
- solr如何让全词匹配结果在最前面
在全文搜索中默认排序是按照匹配度权值score排序的,权值越大位置越靠前,那为什么有很多时候全词匹配反而不在最前面那,其实很简单因为全词匹配权值也就是100,但是还有很多权值大于100的排在了前面. ...
- linux:apt-get 如何安装,查询,解除依赖包
apt-cache search package 搜索包 apt-cache show package 获取包的相关信息,如说明.大小.版本等 sudo apt-get install package ...
- centos7 安装Jdk1.8.0
不是很懂网上的文章...配置... 执行命令: rpm -qa|grep jdk 若无信息表明本机没装jdk. 执行安装命令: yum install -y java-1.8.0-openjdk-de ...
- MySQL/InnoDB中,对于锁的认识
MySQL/InnoDB的加锁,一直是一个面试中常问的话题.例如,数据库如果有高并发请求,如何保证数据完整性?产生死锁问题如何排查并解决?我在工作过程中,也会经常用到,乐观锁,排它锁,等.于是今天就对 ...
- Java Base64 加密/解密
Base64常用来表示字串加密过后的内容,使用Java 程式语言来实作Base64的编码与解码功能 1.在Java上做Base64的编码与解码,会使用到JDK里sun.misc套件下的BASE64En ...
- winform 之MDI容器
MDI是指将多控件窗体在同一窗体中打开 1.设置:属性中IsMDIContainer:true; 窗体变为灰色成为MDI窗体容器 2.MDI中一般采用菜单作为打开方式 3.子级窗体在MDI中打开,需先 ...
- Android 异步消息处理机制 让你深入理解 Looper、Handler、Message三者关系
转自:http://blog.csdn.net/lmj623565791/article/details/38377229 ,本文出自[张鸿洋的博客] 很多人面试肯定都被问到过,请问Android中的 ...