2011-10-17 11 views
8

Sto provando ad usare (nuovo con) Fluent NHibernate (provando a passare da file di mapping XML a FNH). Con il codice qui sotto, ho generato il database, sto cercando di trovare la stessa soluzione, ma con FNH (mi piacerebbe utilizzare ancora hibernate.cfg.xml):Generare database con Nhibernate usando Fluent NHibernate

public void CreateDatabase() 
{ 
    NHibernate.Cfg.Configuration cfg = new NHibernate.Cfg.Configuration(); 

    cfg.Configure(); 
    SchemaMetadataUpdater.QuoteTableAndColumns(cfg); 
    NHibernate.Tool.hbm2ddl.SchemaExport schema = new NHibernate.Tool.hbm2ddl.SchemaExport(cfg); 

    schema.Create(false, true); 
} 


namespace MyTestApplication.Entities 
{ 
    public class Person 
    { 
     public virtual int Id { get; set; } 
     public virtual string FirstName { get; set; } 
     public virtual string LastName { get; set; } 
    } 
} 

namespace MyTestApplication.Data.Mapping 
{ 
    public class PersonMapping : ClassMap<Person> 
    { 
     public PersonMapping() 
     { 
      Id(x => x.Id); 
      Map(x => x.FirstName); 
      Map(x => x.LastName);  
     } 
    } 
} 

Soluzione

Infine, io uso questo (Grazie a Marco):

public void CreationDB() 
    { 
     FluentConfiguration config = Fluently.Configure() 
      .Database(MsSqlConfiguration.MsSql2008.ConnectionString("......")) 
      .Mappings(
       m => m.FluentMappings.Add(typeof(MyTestApplication.Data.Mapping.PersonMapping) 
      )); 

     config.ExposeConfiguration(
        c => new SchemaExport(c).Execute(true, true, false)) 
      .BuildConfiguration(); 
    } 
+1

Grazie! Hai reso la mia giornata e mi hai risparmiato ore di ricerche –

risposta

17

io uso questo, anche se penso che si potrebbe trovare qualcosa di più elegante:

public FluentConfiguration GetConfig() 
{ 
    return Fluently.Configure() 
     .Database(
       MySQLConfiguration.Standard.ConnectionString(
        c => c.Server("...").Database("...").Username("...").Password("...")) 
     ) 
     .Mappings(
       m => m.FluentMappings.AddFromAssembly(Assembly.GetExecutingAssembly()) 
     ); 
} 

public void Export(bool script, bool export, bool justDrop) 
{ 
    GetConfig() 
     .ExposeConfiguration(
       c => new SchemaExport(c).Execute(script, export, justDrop)) 
     .BuildConfiguration(); 
} 

Infine chiamo Export(true, true, false).

Problemi correlati