五月综合缴情婷婷六月,色94色欧美sute亚洲线路二,日韩制服国产精品一区,色噜噜一区二区三区,香港三级午夜理伦三级三

您現(xiàn)在的位置: 365建站網(wǎng) > 365文章 > 使用MySQL配置NHibernate出錯,不和諧的解決方式

使用MySQL配置NHibernate出錯,不和諧的解決方式

文章來源:365jz.com     點(diǎn)擊數(shù):600    更新時間:2011-04-10 23:15   參與評論

以前使用MySQL,只是簡單的利用Connection,Command做一些小P測試程序,對MySQL的認(rèn)識也只是停留在它是個數(shù)據(jù)庫而已,跟SQL Server沒有神馬區(qū)別。

現(xiàn)在項目開發(fā)過程中,越來越依賴ORM、依賴注入,今天使用MySQL配置了一把,過程中出現(xiàn)了一點(diǎn)小小問題,主要原因就是:Spring不能初始化MySQL的數(shù)據(jù)庫Provider。

我安裝的MySQL版本是5.0.27

項目添加的MySQL驅(qū)動的版本是Assembly MySql.Data, Version 5.1.7.0

Spring相關(guān)配置文件:

<?xml version="1.0" encoding="utf-8" ?>
<objects xmlns="http://www.springframework.net" xmlns:db="http://www.springframework.net/database">

<!-- Referenced by main application context configuration file -->
<description>
Definitions for the NHibernate Objects.
</description>

<!-- Database and NHibernate Configuration -->
<db:provider id="DbProvider"
provider
="MySql-5.0"
connectionString
="Data Source=localhost;User Id=root;Password=root;database=moye"/>

<object id="NHibernateSessionFactory" type="Spring.Data.NHibernate.LocalSessionFactoryObject, Spring.Data.NHibernate12">
<property name="DbProvider" ref="DbProvider"/>
<property name="MappingAssemblies">
<list>
<value>Meego.Moye.HibernateDAL.Mapping</value>
</list>
</property>
<property name="HibernateProperties">
<dictionary>
<entry key="hibernate.connection.provider" value="NHibernate.Connection.DriverConnectionProvider"/>
<entry key="hibernate.dialect" value="NHibernate.Dialect.MySQL5Dialect"/>
<entry key="hibernate.connection.driver_class" value="NHibernate.Driver.MySqlDataDriver"/>
<entry key="hibernate.show_sql" value="false"/>
</dictionary>
</property>
</object>

<object id="HibernateTransactionManager"
type
="Spring.Data.NHibernate.HibernateTransactionManager, Spring.Data.NHibernate12">
<property name="DbProvider" ref="DbProvider"/>
<property name="SessionFactory" ref="NHibernateSessionFactory"/>
</object>

<object id="HibernateTemplate" type="Spring.Data.NHibernate.HibernateTemplate">
<property name="SessionFactory" ref="NHibernateSessionFactory" />
<property name="TemplateFlushMode" value="Auto" />
<property name="CacheQueries" value="true" />
</object>

</objects>

按照項目分層的原則,類關(guān)系如圖:

注入TeacherDao:

<object id="TeacherDao" type="Meego.Moye.HibernateDAL.MySQL.TeacherDaoHibernate,Meego.Moye.HibernateDAL.MySQL">
<property name="HibernateTemplate" ref="HibernateTemplate"/>
</object>

在Default.aspx頁面中注入TeacherDao:

<object type="~/Default.aspx">
<property name="TeacherDao" ref="TeacherDao"></property>
</object>

頁面中獲取List<Teacher>列表:

IList<Teacher> teachers = this.teacherDao.GetTeachers();

項目部署到現(xiàn)在,基本已經(jīng)搞定,為了簡單,這里沒有配置IBLL層和BLLImpl層。

跟以前配置ORM及依賴注入一樣,可是程序會奇怪的報一個錯誤:

Error thrown by a dependency of object 'MySql-5.0' defined in 'assembly [Spring.Data, Version=1.1.2.20125, Culture=neutral, PublicKeyToken=65e474d141e25e07], resource [Spring.Data.Common.dbproviders.xml]' : 
Unsatisfied dependency expressed through constructor argument with index 2 of type [System.Type] : 
Could not convert constructor argument value [MySql.Data.MySqlClient.MySqlConnection, MySql.Data, Version=5.0.7.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d] to required type [System.Type] : 
Cannot convert property value of type [System.String] to required type [System.Type] for property ''.
while resolving 'constructor argument with name dbmetadata' to '(inner object)' defined in 'assembly [Spring.Data, Version=1.1.2.20125, Culture=neutral, PublicKeyToken=65e474d141e25e07], resource [Spring.Data.Common.dbproviders.xml]'

主要原因是配置DbProvider時候,Spring不能初始化數(shù)據(jù)庫Provider。

查看Spring支持?jǐn)?shù)據(jù)庫Provider:

名稱

介紹

SqlServer-1.1

Microsoft SQL Server, provider V1.0.5.0 in framework .NET V1.1

SqlServer-2.0

Microsoft SQL Server, provider V2.0.0.0 in framework .NET V2.0

SqlServerCe-3.1

Microsoft SQL Server Compact Edition, provider V9.0.242.0

SqlServerCe-3.5.1

Microsoft SQL Server Compact Edition, provider V3.5.1.0

OleDb-1.1

provider V1.0.5000.0 in framework .NET V1.1

OleDb-2.0

provider V2.0.0.0 in framework .NET V2.0

OracleClient-2.0

Oracle, Microsoft provider V2.0.0.0

OracleODP-2.0

Oracle, Oracle provider V2.102.2.20

MySql

MySQL provider 1.0.10.1

MySql-1.0.9

MySQL provider 1.0.9

MySql-5.0

MySQL provider 5.0.7.0

MySql-5.0.8.1

MySQL provider 5.0.8.1

MySql-5.1

MySQL provider 5.1.2.2

MySql-5.1.4

MySQL provider 5.1.2.2

MySql-5.2.3

MySQL provider 5.2.3.0

Npgsql-1.0

Postgresql provider 1.0.0.0 (and 1.0.0.1 - were build with same version info)

Npgsql-2.0 -beta1

Postgresql provider 1.98.1.0 beta 1

Npgsql-2.0

Postgresql provider 2.0.0.0

DB2-9.0.0-1.1

IBM DB2 Data Provider 9.0.0 for .NET Framework 1.1

DB2-9.0.0-2.0

IBM DB2 Data Provider 9.0.0 for .NET Framework 2.0

DB2-9.1.0-1.1

IBM DB2 Data Provider 9.1.0 for .NET Framework 1.1

DB2-9.1.0.2

IBM DB2 Data Provider 9.1.0 for .NET Framework 2.

SQLite-1.0.43

SQLite provider 1.0.43 for .NET Framework 2.0

SQLite-1.0.47

SQLite provider 1.0.43 for .NET Framework 2.0

SybaseAse-12

Sybase ASE provider for ASE 12.x

SybaseAse-15

Sybase ASE provider for ASE 15.x

SybaseAse-AdoNet2

Sybase ADO.NET 2.0 provider for ASE 12.x and 15.x

Odbc-1.1

ODBC provider V1.0.5000.0 in framework .NET V1.1

Odbc-2.0

ODBC provider V2.0.0.0 in framework .NET V2

InterSystems.Data.CacheClient

Caché provider Version 2.0.0.1 in framework .NET V2


具體請查看Spring.Net 官方文檔 Chapter 19. DbProvider。

我的MySQL版本是5.1.7.0沒有對應(yīng)的版本,具體什么原因,在網(wǎng)站查找資料也沒有發(fā)現(xiàn)解決方法,

沒有辦法我只好從MySQL的官方文檔上下來了最新的MySQL-connector-net安裝到機(jī)器上,重新啟動網(wǎng)站,

測試已經(jīng)沒有問題。

難道是安裝MySQL-connector-net時,重新配置了VS環(huán)境的問題?

本人就是愛折騰,接下來把MySQL-connector-net安裝目錄下的MySql.Data.dll拷貝出來,放到項目文件里,修改網(wǎng)站引用的程序集,

卸載MySQL-connector-net,測試網(wǎng)站,未果,還是報錯。

最后修改DbProvider name屬性:

<!-- Database and NHibernate Configuration -->
<db:provider id="DbProvider"
provider
="OracleClient-2.0"
connectionString
="Data Source=localhost;User Id=root;Password=root;database=moye"/>

測試正常。

有點(diǎn)無語,不過還是把mysql-connector-net安裝上,算是一種合適的解決方式。

大家有沒有遇到相同的問題,小弟對這其中的原理不是很清楚,希望知道的朋友幫忙解釋一下,感謝。

如對本文有疑問,請?zhí)峤坏浇涣髡搲?,廣大熱心網(wǎng)友會為你解答??! 點(diǎn)擊進(jìn)入論壇

發(fā)表評論 (600人查看,0條評論)
請自覺遵守互聯(lián)網(wǎng)相關(guān)的政策法規(guī),嚴(yán)禁發(fā)布色情、暴力、反動的言論。
昵稱:
最新評論
------分隔線----------------------------

其它欄目

· 建站教程
· 365學(xué)習(xí)

業(yè)務(wù)咨詢

· 技術(shù)支持
· 服務(wù)時間:9:00-18:00
365建站網(wǎng)二維碼

Powered by 365建站網(wǎng) RSS地圖 HTML地圖

copyright © 2013-2024 版權(quán)所有 鄂ICP備17013400號