2009-07-18 47 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)