【发布时间】:2010-01-10 05:57:16
【问题描述】:
如何在 MappingIntegrationTests 中生成 xml 映射文件作为测试的一部分
我需要手动检查流畅的映射是否与旧项目中的映射相关。
【问题讨论】:
标签: nhibernate fluent-nhibernate nhibernate-mapping s#arp-architecture
如何在 MappingIntegrationTests 中生成 xml 映射文件作为测试的一部分
我需要手动检查流畅的映射是否与旧项目中的映射相关。
【问题讨论】:
标签: nhibernate fluent-nhibernate nhibernate-mapping s#arp-architecture
你可以这样做:
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
【讨论】:
m.HbmMappings.ExportTo() 不存在 - 这在某种意义上是有意义的,因为 .hbm 映射已经是文件。
通过调用 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();
查看文档:
【讨论】:
我使用(几乎)这种扩展方法来获取内存中的 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 更新。
【讨论】: