سؤال

فضولي إذا كان أي شخص هناك قد ربط nhibernate على الإطلاق إلى Visual Foxpro 8.0؟ أنا أتطلع إلى ربط متجر بيانات قديم ، وأفضل استخدام nhibernate مقابل الاضطرار إلى ترميز جميع ado.net.

إذا كان لدى أي شخص مثال على ملف Configuration XML لاتصال FoxPro 8 سيكون رائعًا!

هل كانت مفيدة؟

المحلول

ورأت الحل:

أولاً ، كنت بحاجة لالتقاط برامج تشغيل Foxpro Visual (هذه هي 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 جنبا إلى جنب مع GenericDialect يجب أن تبدأ.

هذا هو الحل:

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"));
    }
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top