3

好奇是否有人曾经将 NHibernate 连接到 Visual Foxpro 8.0?我正在寻找一个遗留数据存储,并且更愿意使用 NHibernate 而不是必须手动编码所有 ADO.Net。

如果有人有 FoxPro 8 连接的配置 XML 文件的示例,那就太好了!

4

3 回答 3

4

并想出了解决方案:

首先,我需要拿起Visual FoxPro 驱动程序(这些是 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>

现在,世界上一切都好!

于 2010-11-12T12:55:14.457 回答
1

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

于 2010-11-05T14:59:08.600 回答
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());

和配置图:

public class MyClassMap: ClassMapping<MyClass>
{
    public MyClassMap(string filename)
    {
        Table("[" + filename + "]");
        Id(e => e.LineNo, m => m.Column("Line_No"));
    }
}
于 2012-03-28T22:54:50.027 回答