Подтвердить что ты не робот

Создание XML-сопоставлений из свободного Nhibernate

Как создать файлы сопоставления xml как часть моих тестов в MappingIntegrationTests

Мне нужно вручную проверить, соответствуют ли текущие сопоставления сопоставлениям в проекте leagcy.

4b9b3361

Ответ 1

Вы можете сделать что-то вроде:

 config.Mappings(m => 
    {
        m.FluentMappings.ExportTo("...file path here...");
        m.HbmMappings.ExportTo("...file path here...");
        m.AutoMappings.ExportTo("...file path here...");
    {
);

Мне это не нравится. Если я найду лучший способ (если таковой вообще существует), я обновлю ответ.

См
http://blog.jagregory.com/2009/02/03/fluent-nhibernate-configuring-your-application/
Или, если он сломан, см. Это вместо https://github.com/jagregory/fluent-nhibernate/wiki/Database-configuration

Ответ 2

Вы создаете сопоставления XML, вызывая метод ExportTo().

Например:

ISessionFactory sessionFactory = FluentNHibernate.Cfg.Fluently.Configure()
  .Database(FluentNHibernate.Cfg.Db.MsSqlConfiguration.MsSql2008
    .ConnectionString(connectionString)
  )
  .Mappings(m => m.FluentMappings.AddFromAssembly(assembly)
    .ExportTo(@"C:\your\export\path")
  )
  .BuildSessionFactory();

См. здесь документацию:

http://wiki.fluentnhibernate.org/Fluent_configuration

Ответ 3

Я использую (почти) этот метод расширения для получения xbm в памяти, поэтому я могу просмотреть его в своем тестовом проекте:

   public static IDictionary<string, string> LoadHBM(this FluentConfiguration cfg)
    {
        var result = new Dictionary<string, string>();
        var mem = new MemoryStream();
        var writer = new StreamWriter(mem);
        var reader = new StreamReader(mem);

        cfg.Mappings(x =>
        {
            x.FluentMappings.ExportTo(writer);
            x.AutoMappings.ExportTo(writer);
        });

        cfg.BuildConfiguration();
        writer.Flush();
        mem.Seek(0, 0);
        var hbm = reader.ReadToEnd();

        var objects = XElement.Parse("<junk>" + hbm + "</junk>").Elements();
        objects.ToList().ForEach(x => result.Add(x.Elements().First().Attribute("name").Value, x.ToString()));
        return result;
    }

Изменить: Обновлено для FNH 1.2.