2010-11-05 4 views
2

Любопытно, если кто-нибудь из когда-либо подключал NHibernate к Visual Foxpro 8.0? Я ищу, чтобы подключиться к устаревшему хранилищу данных, и предпочел бы использовать NHibernate, вместо того, чтобы вручную кодировать все ADO.Net.Конфигурация NHibernate для подключения к Visual FoxPro 8.0?

Если у кого-то есть пример файла конфигурации XML для подключения FoxPro 8, это было бы замечательно!

ответ

3

И выяснили решение:

Первое, что мне нужно, чтобы забрать Visual FoxPro drivers (это 9.0, но позволил мне работать в 8.0).

Далее я должен был настроить конфигурацию NHibernate следующим образом. В этом проекте я основанный на каталогах, поэтому у меня есть каталог C: \ Temp \ VisualFox \, который содержит все мои файлы * .dbf.

<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2"> 
    <reflection-optimizer use="false" /> 
    <session-factory> 
     <property name="connection.provider">NHibernate.Connection.DriverConnectionProvider</property> 
     <property name="dialect">NHibernate.Dialect.GenericDialect</property> 
     <property name="connection.driver_class">NHibernate.Driver.OleDbDriver</property> 
     <property name="connection.connection_string">Provider=VFPOLEDB;Data Source=C:\Temp\VisualFox;Collating Sequence=general</property> 
     <property name="proxyfactory.factory_class">NHibernate.ByteCode.Castle.ProxyFactoryFactory, NHibernate.ByteCode.Castle</property> 
     <property name="show_sql">false</property> 
    </session-factory> 
    </hibernate-configuration> 

А теперь все в мире!

1

У меня нет полного примера XML, но с помощью OleDbDriver вместе с GenericDialect вы должны начать.

+0

Позвольте мне, что выстрел! –

1

Вот мое решение:

var connectionString = @"Provider=VFPOLEDB.1;Data Source={0};CodePage=850".FormatWith(directory); 

var cfg = new Configuration() 
    .DataBaseIntegration(c => 
    { 
     c.Dialect<GenericDialect>(); 
     c.ConnectionString = connectionString; 
     c.KeywordsAutoImport = Hbm2DDLKeyWords.AutoQuote; 
     c.BatchSize = 100; 
     c.Driver<OleDbDriver>(); 
    }); 

cfg.AddMapping(GetMappings()); 

и Config карты:

public class MyClassMap: ClassMapping<MyClass> 
{ 
    public MyClassMap(string filename) 
    { 
     Table("[" + filename + "]"); 
     Id(e => e.LineNo, m => m.Column("Line_No")); 
    } 
}