Создайте базу данных с помощью Nhibernate, используя Fluent NHibernate

#database #nhibernate #configuration #fluent-nhibernate

#База данных #nhibernate #конфигурация #fluent-nhibernate

Вопрос:

Я пытаюсь использовать (новый с) Fluent NHibernate (пытаюсь переключиться с файла сопоставления XML на FNH). С помощью приведенного ниже кода я сгенерировал базу данных, я пытаюсь найти то же решение, но с FNH (я бы хотел все еще использовать hibernate.cfg.xml ) :

 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);      
        }
    }
}
  

Решение

Наконец, я использую это (благодаря Марко) :

  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. Спасибо! Вы сделали мой день лучше и сэкономили мне часы исследований

Ответ №1:

Я использую это, даже если я думаю, что вы могли бы найти что-то более элегантное:

 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();
}
  

Наконец я звоню Export(true, true, false) .