Generate XML mappings from fluent Nhibernate

前端 未结 3 1458
Happy的楠姐
Happy的楠姐 2020-11-30 08:07

How do I generate xml mappings files as part of my tests in MappingIntegrationTests

I need to manually check if the fluent mappings correlate to the mappings in t

相关标签:
3条回答
  • 2020-11-30 08:20

    You generate XML mappings by calling the ExportTo() method.

    For example:

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

    See here for documentation:

    http://wiki.fluentnhibernate.org/Fluent_configuration

    0 讨论(0)
  • 2020-11-30 08:28

    I use (almost) this extension method to get the xbm in memory so I can view it in my test project:

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

    Edit: Updated for FNH 1.2.

    0 讨论(0)
  • 2020-11-30 08:36

    You can do something like:

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

    I don't like it myself. If I find some better way (if such exists at all) I'll update the answer.

    See
    http://blog.jagregory.com/2009/02/03/fluent-nhibernate-configuring-your-application/
    Or if broken, see this instead
    https://github.com/jagregory/fluent-nhibernate/wiki/Database-configuration

    0 讨论(0)
提交回复
热议问题