2011-10-17 15 views
8

Estoy tratando de usar (nuevo con) Fluido NHibernate (tratando de cambiar de archivo de mapeo XML a FNH). Con el código de abajo, me genera la base de datos, estoy tratando de encontrar la misma solución pero con HNF (me gustaría seguir utilizando hibernate.cfg.xml):Generar base de datos con Nhibernate usando Fluiber 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);  
     } 
    } 
} 

Solución

Por último, utilizo este (Gracias 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

¡Gracias! Hiciste mi día y me ahorraste horas de investigación –

Respuesta

17

utilizo esto, aunque creo que se podría encontrar algo más 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(); 
} 

Finalmente llamo al Export(true, true, false).

Cuestiones relacionadas