从fluent Nhibernate生成XML映射
如何在MappingIntegrationTests中生成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
我需要手动检查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年。我添加了另一个类似的链接。文件的扩展名是什么?链接已断开