2009-07-18 59 views
1

我一直在努力解決如何通過NHibernate連接到一個ESRI形狀文件(我認爲是一個DBase表文件),但沒有任何我嘗試過的運氣。從NHibernate連接到ESRI形狀文件(DBase * .dbf文件)

目前,我的配置在尋找這樣的:

<property name="connection.provider">NHibernate.Connection.DriverConnectionProvider</property> 

<!--<property name="dialect">NHibernate.Dialect.GenericDialect</property> 
<property name="connection.driver_class">NHibernate.Driver.OdbcDriver</property> 
<property name="connection.connection_string">Database=A303.dbf;protocol=TCPIP</property>--> 

<property name="connection.driver_class">NHibernate.Driver.OdbcDriver</property> 
<!--<property name="connection.connection_string">driver={IBM DB2 ODBC DRIVER};Database=a303.dbf;protocol=TCPIP</property>--> 
<property name="connection.connection_string">Provider=VFPOLEDB.1; Data Source=C:\projects\rm4\Sandbox\bin\Debug\A303.dbf;Extended Properties=dBase III</property> 
<property name="dialect">NHibernate.Dialect.DB2Dialect</property> 
<property name="use_outer_join">true</property> 

<property name="proxyfactory.factory_class">NHibernate.ByteCode.Castle.ProxyFactoryFactory, NHibernate.ByteCode.Castle</property> 
<property name="show_sql">true</property> 

我已經離開了註釋掉位,所以你可以看到什麼值我一直在努力。不管我怎麼努力,我得到錯誤信息:

ERROR [IM002] [微軟] [ODBC驅動程序管理器]數據源名稱找不到和未指定默認驅動程序

我已經經歷了最我在網上找到的連接字符串的連接字符串,在這裏的一些問題的答案是越來越「抓緊吸管」階段,我只是把任何東西放在這樣想,我最好要求幫助。

我甚至不確定是否可以從NHibernate連接到這種類型的文件,但如果是的話,是否有人知道配置中應該包含什麼?

+0

在一個側面說明,shape文件屬性表存儲在dBase格式上的白皮書(不記得,如果它的dBase IV或5,但一那些),所以你應該能夠讀取任何可以讀取dBase文件的db驅動程序。大多數驅動程序都指向一個目錄作爲「數據庫」,然後該目錄中的每個dbf文件都是數據庫中的一個表。 – 2009-08-18 14:59:20

回答

0

我會嘗試一個不同的NHibernate驅動程序。以下是文檔中列出的NHibernate drivers

從連接字符串中的提供者名稱判斷,我會嘗試NHibernate.Driver.OleDbDriver。

如果不這樣做,我會從混合中消除NHibernate,看看您是否可以使用標準的.NET數據類(如System.Data.Odbc.OdbcConnection和System.Data.OleDb.OleDbConnection)進行連接。如果你不能在這個級別連接,那麼問題不是NHibernate。

+0

嗨,很抱歉沒有儘快回覆 - 沒有收到關於回覆的電子郵件。我最終使用OleDb驅動程序直接連接到數據,並且工作正常。它在項目結尾的待辦事項列表中將其轉換爲NHibernate,因此當我這樣做時,我會嘗試您的建議。謝謝。 – 2009-08-26 16:55:25

1

Shapefile(.shp)本身不是dbf。它實際上是一組文件,其中一個是DBF,但存儲幾何體的shapefile本身完全是不同的格式。

還有就是ESRI網站(www.esri.com)