2016-04-12 50 views
0

eklenemiyor ama istisna oluyoruz: Bir SessionFactory oluşturulurkenNHibernate NHibernate ile SQL Server Express LocalDB eklemek çalışıyorum MDF

Geçersiz veya eksik yapılandırma kullanıldı. Daha fazla bilgi için PotansiyelReasons koleksiyonunu ve InnerException öğesini kontrol edin. İç istisna varlık ile

:

veritabanı 'Testi' olarak dosyayı 'Test.mdf' eklenemiyor.

bu hatayı karşılaştım

Entity Framework kullanarak ve onu içinden düzeltmek zaman önce:

> sqllocaldb stop v11.0 
> sqllocaldb delete v11.0 

bu durumda çalışmıyor Ancak.

konuydu
using FluentNHibernate.Cfg; 
using FluentNHibernate.Cfg.Db; 
using FluentNHibernate.Mapping; 
using NHibernate.Tool.hbm2ddl; 

namespace Sandbox 
{ 
    public class Person 
    { 
     public virtual int Id { get; set; } 
     public virtual string Name { get; set; } 
    } 

    public class PersonMap : ClassMap<Person> 
    { 
     public PersonMap() 
     { 
      Id(p => p.Id); 
      Map(p => p.Name); 
     } 
    } 

    public class Program 
    { 
     public static void Main(string[] args) 
     { 
      var connectionString = 
       @"Data Source=(LocalDB)\v11.0;AttachDBFilename=Test.mdf;" + 
       @"Initial Catalog=Test;Integrated Security=True"; 

      var _sessionFactory = Fluently.Configure() 
       .Database(MsSqlConfiguration.MsSql2012.ConnectionString(connectionString)) 
       .Mappings(m => m.FluentMappings.AddFromAssemblyOf<Program>()) 
       .ExposeConfiguration(cfg => new SchemaExport(cfg).Create(false, true)) 
       .BuildSessionFactory(); 
     } 
    } 
} 
+0

Test.mdf şu anda var mı? Mevcut olanı siler ve 'sqllocaldb' komutlarınızı çalıştırırsanız çalışır mı? –

+0

@TimS. Test.mdf mevcut değil – maddisoj

cevap

0

, Varlık Framework aksine NHibernate sizin için veritabanı oluşturmak olmaz: Aşağıda benim komple bir programdır. Ben ilk veritabanı oluşturmak için aşağıdakileri yapmak zorunda:

 var databaseName = "Test"; 
     var databaseFile = "Test.mdf"; 

     if(!File.Exists(databaseFile)) 
     { 
      var connectionString = @"Data Source=(LocalDB)\v11.0;Integrated Security=True;"; 
      var query = [email protected]" 
       CREATE DATABASE {databaseName} ON PRIMARY (
        NAME = '{databaseName}', 
        FILENAME = '{databaseFile}');"; 

      using(var connection = new SqlConnection(connectionString)) 
      { 
       using(var command = new SqlCommand(query, connection)) 
       { 
        connection.Open(); 
        command.ExecuteNonQuery(); 
       } 
      } 

      Console.WriteLine("Created database!"); 
     } 

Not: Bu üretim kalite kodu, sorunun sadece bir gösteri değildir.