好奇是否有人曾经将 NHibernate 连接到 Visual Foxpro 8.0?我正在寻找一个遗留数据存储,并且更愿意使用 NHibernate 而不是必须手动编码所有 ADO.Net。
如果有人有 FoxPro 8 连接的配置 XML 文件的示例,那就太好了!
好奇是否有人曾经将 NHibernate 连接到 Visual Foxpro 8.0?我正在寻找一个遗留数据存储,并且更愿意使用 NHibernate 而不是必须手动编码所有 ADO.Net。
如果有人有 FoxPro 8 连接的配置 XML 文件的示例,那就太好了!
并想出了解决方案:
首先,我需要拿起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>
现在,世界上一切都好!
我没有完整的 XML 示例,但是使用OleDbDriver
withGenericDialect
应该可以帮助您入门。
这是我的解决方案:
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"));
}
}