#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)
.