NHibernate配置连接到Visual FoxPro 8.0?

时间:2010-11-05 13:54:22

标签: nhibernate visual-foxpro nhibernate-configuration

好奇是否有人曾将NHibernate连接到Visual Foxpro 8.0?我想要挂钩遗留数据存储,并且更愿意使用NHibernate而不必手动编写所有ADO.Net。

如果有人有一个FoxPro 8连接的配置XML文件的例子那么棒!

3 个答案:

答案 0 :(得分:4)

找出了解决方案:

首先,我需要拿起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 :(得分:1)

我没有完整的XML示例,但使用OleDbDriverGenericDialect可以帮助您入门。

答案 2 :(得分: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"));
    }
}