سؤال

أرغب في إنشاء برنامج نصي قاعدة بيانات دون إعلان سلسلة اتصال قاعدة بيانات فعلية.

للقيام بذلك في الوقت الحالي ، أستخدم قواعد Nhibernate orderschema على تكوين nhibernate الذي تم إنشاؤه مع nhibernate بطلاقة بهذه الطريقة (خلال طريقة إنشاء iSessionFactory):

FluentConfiguration configuration = Fluently.Configure();               
//Mapping conf ...
configuration.Database(fluentDatabaseProvider);
this.nhibernateConfiguration = configuration.BuildConfiguration();
returnSF = configuration.BuildSessionFactory();     

//Later
new SchemaExport(this.nhibernateConfiguration)              
                .SetOutputFile(filePath)
                .Execute(false, false, false);      

FluentDatabaseProvider هو fareentnhibernate ipersistenceConfigurer وهو ضروري للحصول على لهجة SQL المناسبة لإنشاء قاعدة البيانات.

عند إنشاء المصنع باستخدام قاعدة بيانات موجودة ، يعمل كل شيء بشكل جيد. لكن ما أريد القيام به هو إنشاء كائن تكوين nhibernate على محرك قاعدة بيانات محددة بدون قاعدة بيانات حقيقية خلف المشهد ... ولا أتمكن من القيام بذلك.

إذا كان لدى أي شخص بعض الأفكار.

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

المحلول

جرب استخدام:

.Create(false, false);

في مكان

.Execute(false, false, false); 

لا تضيف خاصية ConnectionString إلى ipersistenceConfigurer (FallentDatabaseProvider).

نصائح أخرى

هذا ما استخدمته. كان خطأي هو استدعاء BuildsessionFactory الذي يحاول الاتصال بقاعدة البيانات:

        var config = Fluently.Configure()
          .Database(MsSqlConfiguration.MsSql2008)
          .Mappings(m =>
            m.FluentMappings.AddFromAssemblyOf<SessionManager>());

        new SchemaExport(config.BuildConfiguration())
                .SetOutputFile(filedestination)
                .Create(false, false);
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top