从fluent Nhibernate生成XML映射

从fluent Nhibernate生成XML映射,nhibernate,fluent-nhibernate,nhibernate-mapping,s#arp-architecture,Nhibernate,Fluent Nhibernate,Nhibernate Mapping,S#arp Architecture,如何在MappingIntegrationTests中生成xml映射文件作为测试的一部分 我需要手动检查fluent映射是否与leagcy项目中的映射相关 通过调用ExportTo()方法生成XML映射 例如: ISessionFactory sessionFactory = FluentNHibernate.Cfg.Fluently.Configure() .Database(FluentNHibernate.Cfg.Db.MsSqlConfiguration.MsSql2008

如何在MappingIntegrationTests中生成xml映射文件作为测试的一部分


我需要手动检查fluent映射是否与leagcy项目中的映射相关

通过调用ExportTo()方法生成XML映射

例如:

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();
有关文档,请参见此处:


您可以执行以下操作:

 config.Mappings(m => 
    {
        m.FluentMappings.ExportTo("...file path here...");
        m.HbmMappings.ExportTo("...file path here...");
        m.AutoMappings.ExportTo("...file path here...");
    {
);
我自己也不喜欢。如果我找到更好的方法(如果有),我会更新答案



或者,如果损坏,请改为查看此内容

我使用(几乎)这种扩展方法在内存中获取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;
    }
公共静态IDictionary LoadHBM(此FluentConfiguration cfg)
{
var result=newdictionary();
var mem=新内存流();
var writer=新的StreamWriter(mem);
变量读取器=新的流读取器(mem);
映射(x=>
{
x、 FluentMappings.ExportTo(writer);
x、 自动映射。导出到(编写器);
});
BuildConfiguration();
writer.Flush();
记忆寻道(0,0);
var hbm=reader.ReadToEnd();
var objects=XElement.Parse(“+hbm+”).Elements();
objects.ToList().ForEach(x=>result.Add(x.Elements().First().Attribute(“name”).Value,x.ToString());
返回结果;
}

编辑:为FNH 1.2更新。

至少在当前版本的FluentNH(如1.3)中,
m.HbmMappings.ExportTo()
不存在-这有一定意义,因为.hbm映射已经是文件。链接是brokenUm。是 啊我想是从2009年开始的漫长的8年。我添加了另一个类似的链接。文件的扩展名是什么?链接已断开