NHibernate1.02使用MsAccess2000Dialect 提供对 Access 数据库的支持
生活随笔
收集整理的這篇文章主要介紹了
NHibernate1.02使用MsAccess2000Dialect 提供对 Access 数据库的支持
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
????? NHibernateContrib 提供的JetDriver訪問Access數據庫簡直是噩夢連連。插入更新含有日期類型的都回出現異常。在網上找到用 MsAccess2000Dialect 訪問Access數據庫的方法。1.02版本的NHibernate 或者NHibernateContrib本身沒有包含MsAccess2000Dialect 在這里找到了它的下載地址 http://wiki.nhibernate.org/pages/viewpageattachments.action?pageId=345
?????? 包含兩個文件:msaccess2000joinfragment.cs?和 msaccess2000dialect.cs?。
?????? 打開NHibernate的項目后把兩個文件放到這里
然后重新編譯NHibernate的項目就可以了。但是下載下來的文件有幾個地方要修改一下。
????????{
????????????get?{?return?']';?}
????????}
????????///?<summary></summary>
????????protected?override?char?OpenQuote
????????{
????????????get?{?return?'[';?}
????????}
的訪問修飾符應該改為public。
????????{
????????????Register(?DbType.AnsiStringFixedLength,?"CHAR(255)"?);
????????????Register(?DbType.AnsiStringFixedLength,?255,"CHAR($1)"?);
????????????Register(?DbType.AnsiStringFixedLength,?8000,?"LONGTEXT"?);
????????????Register(?DbType.AnsiString,?"VARCHAR(255)"?);
????????????Register(?DbType.AnsiString,?255,"VARCHAR($1)"?);
????????????Register(?DbType.AnsiString,?2147483647,?"LONGTEXT"?);
????????????Register(?DbType.Binary,?"IMAGE"?);
????????????Register(?DbType.Boolean,?"BIT"?);
????????????Register(?DbType.Byte,?"TINYINT"?);
????????????Register(?DbType.Currency,?"MONEY"?);
????????????Register(?DbType.Date,?"DATETIME"?);
????????????Register(?DbType.DateTime,?"DATETIME"?);
????????????Register(?DbType.Decimal,?"NUMERIC"?);
????????????Register(?DbType.Double,?"DOUBLE"?);?//synonym?for?FLOAT(53)
????????????Register(?DbType.Guid,?"UNIQUEIDENTIFIER"?);
????????????Register(?DbType.Int16,?"INT"?);
????????????Register(?DbType.Int32,?"LONG"?);
????????????Register(?DbType.Int64,?"NUMERIC"?);
????????????Register(?DbType.Single,?"REAL"?);?//synonym?for?FLOAT(24)?
????????????Register(?DbType.StringFixedLength,?"CHAR(255)"?);
????????????Register(?DbType.StringFixedLength,?255,"CHAR($1)"?);
????????????Register(?DbType.StringFixedLength,?4000,?"LONGTEXT"?);
????????????Register(?DbType.String,?"VARCHAR(255)"?);
????????????Register(?DbType.String,?255,"VARCHAR($1)"?);
????????????Register(?DbType.String,?1073741823,?"LONGTEXT"?);
????????????Register(?DbType.Time,?"DATETIME"?);
????????????DefaultProperties[?Environment.OuterJoin?]?=?"true";
????????????DefaultProperties[?Environment.ConnectionDriver?]?=?"NHibernate.Driver.OleDbDriver";
????????????DefaultProperties[?Environment.PrepareSql?]?=?"false";
????????} 中的Register方法應該全部改為RegisterColumnType方法.
修改完畢后使用這個連接配置文件就可以了。
?<configSections>????<section?name="nhibernate"?type="System.Configuration.NameValueSectionHandler,?System,?Version=1.0.3300.0,Culture=neutral,?PublicKeyToken=b77a5c561934e089"?/>
???</configSections>
??
??<nhibernate>
????<add?key="hibernate.connection.provider"?value="NHibernate.Connection.DriverConnectionProvider"/>
????<add?key="hibernate.dialect"?value="NHibernate.Dialect.MsAccess2000Dialect"/>
????<add?key="hibernate.connection.driver_class"?value="NHibernate.Driver.OleDbDriver"/>
????<add?key="hibernate.connection.connection_string"?value="Provider=Microsoft.Jet.OLEDB.4.0;Data?Source=Access數據庫的路徑和名稱"/>
??</nhibernate>
?
?懶得重新編譯的朋友下可以下這個已經重新編譯過的NHibernate的單項目 /Files/Bruce_H21/NHibernate.rar
?不知道有沒有人用SQL Server 7 dialect來訪問Access數據庫?
?
? 如需轉載請注明出處
轉載于:https://www.cnblogs.com/Bruce_H21/archive/2006/04/29/388643.html
總結
以上是生活随笔為你收集整理的NHibernate1.02使用MsAccess2000Dialect 提供对 Access 数据库的支持的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: .NET 框架与多线程 (转载)
- 下一篇: [转] SQL的3种连接查询