Подключиться к шейп-файлу ESRI (файл DBase *.dbf) из NHibernate

Я пытался понять, как подключиться к файлу формы ESRI (который, как я думаю, является файлом таблицы DBase) через NHibernate, но мне не повезло ни с чем, что я пробовал.

На данный момент мой конфиг выглядит так:

<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>

Я оставил закомментированные биты, чтобы вы могли видеть, какие значения я пробовал. Что бы я ни пытался, я получаю сообщение об ошибке:

ОШИБКА [IM002] [Microsoft][Диспетчер драйверов ODBC] Не найдено имя источника данных и не указан драйвер по умолчанию

Я просмотрел большую часть строки подключения, которую нашел в Интернете, и в некоторых ответах на вопросы здесь переходил к фазе «хвататься за соломинку», когда я просто вставляю что-нибудь, поэтому подумал, что мне лучше обратиться за помощью. .

Я даже не уверен, можно ли подключиться к этому типу файлов из NHibernate, но если да, то кто-нибудь знает, что должно быть в конфиге?


person Kevin Wilson    schedule 18.07.2009    source источник
comment
Кстати, таблицы атрибутов шейп-файлов хранятся в формате dBase (не помню, это dBase IV или 5, но один из них), поэтому вы сможете прочитать их с помощью любого драйвера db, который может читать файлы dBase. В большинстве драйверов вы указываете каталог в качестве базы данных, а затем каждый файл dbf в этом каталоге является таблицей в базе данных.   -  person Michael Todd    schedule 18.08.2009


Ответы (2)


Я бы попробовал другой драйвер NHibernate. Вот список драйверов NHibernate из документации.

Судя по имени провайдера в вашей строке подключения, я бы попробовал NHibernate.Driver.OleDbDriver.

В противном случае я бы исключил NHibernate из набора и посмотрел, можно ли подключиться, используя стандартные классы данных .NET, такие как System.Data.Odbc.OdbcConnection и System.Data.OleDb.OleDbConnection. Если вы не можете подключиться на этом уровне, значит проблема не в NHibernate.

person Mark Glasgow    schedule 13.08.2009
comment
Привет, извините, что не ответила раньше - не получил письмо об ответе. В итоге я использовал драйвер OleDb для прямого подключения к данным, и это работает нормально. В конце проекта в списке задач есть преобразовать это в NHibernate, поэтому я попробую ваше предложение, когда буду это делать. Спасибо. - person Kevin Wilson; 26.08.2009

Шейп-файл (.shp) сам по себе не является dbf. На самом деле это набор файлов, один из которых представляет собой DBF, но сам шейп-файл, в котором хранится геометрия, имеет совершенно другой формат.

На веб-сайте ESRI (www.esri.com) есть технический документ.

person GrammyPuter    schedule 12.02.2011