Как экспортировать XML-файлы hbm, используя s # arparchitecture с плавными отображениями - PullRequest
0 голосов
/ 24 июля 2010

Этот вопрос задавался ранее, но все ответы показывают, как экспортировать файлы hbm из fluentnhibernate. Мы используем S # arpArchitecture, которая свободно переносит. Я могу экспортировать схему, но мне действительно нужны файлы xml для устранения ошибок. Я делал это раньше, используя FNH, но добавление S # arp к миксу усложнило ситуацию, и я не могу этого понять.

Я обнаружил, что этот вопрос задавался на нескольких форумах, но я не могу найти тот, который показывает, как получить файлы сопоставления.

Ответы [ 3 ]

4 голосов
/ 25 июля 2010

Вот как я делаю это в одном из моих проектов:

[TestMethod]
    public void CreateSchema()
    {
        var mappingOutput = ConfigurationManager.AppSettings["xmlMappingOutputDirectory"];
        var sqlOutput = ConfigurationManager.AppSettings["sqlOutputDirectory"];

        Configuration cfg = new Configuration().Configure();
        var persistenceModel = new PersistenceModel();
        persistenceModel.AddMappingsFromAssembly(Assembly.Load("ProjectName.Data"));
        persistenceModel.Configure(cfg);
        persistenceModel.WriteMappingsTo(mappingOutput);
        new SchemaExport(cfg).SetOutputFile(sqlOutput).Create(true, false);
    }

Вам нужно будет установить два ключа в конфигурации вашего приложения или указать значения для них.

0 голосов
/ 08 июня 2012

Как оказалось, это работает, только если вы не используете autopping.Вот решение, если вы используете autopping:

public void CanGenerateMappingFiles() 
{ 
    DirectoryInfo directoryInfo = new DirectoryInfo("../../../../db/mappings"); 

    if (!directoryInfo.Exists) 
        directoryInfo.Create(); 

    Configuration cfg = new Configuration().Configure();  
    var autoPersistenceodel = new AutoPersistenceModelGenerator().Generate(); 

    autoPersistenceodel.Configure(cfg); 
    autoPersistenceodel.AddMappingsFromAssembly(Assembly.Load("TrackerI9.Data")); 
    autoPersistenceodel.WriteMappingsTo(directoryInfo.FullName); 
} 

Вы должны будете убедиться, что ваша конфигурация настроена правильно и что вы выбрали подходящее место для каталога, но в противном случае это должно работать.Это для меня.

0 голосов
/ 14 февраля 2011

http://wiki.fluentnhibernate.org/Fluent_configuration#Exporting_mappings

В вызове Mappings вы можете сделать следующее:

.Mappings(m =>
{
  m.FluentMappings
    .AddFromAssemblyOf<YourEntity>()
    .ExportTo(@"C:\your\export\path");

  m.AutoMappings
    .Add(/* ... */)
    .ExportTo(@"C:\your\export\path");
})
...