Как создать файлы сопоставления xml как часть моих тестов в MappingIntegrationTests
Мне нужно вручную проверить, соответствуют ли текущие сопоставления сопоставлениям в проекте leagcy.
Как создать файлы сопоставления xml как часть моих тестов в MappingIntegrationTests
Мне нужно вручную проверить, соответствуют ли текущие сопоставления сопоставлениям в проекте leagcy.
Вы можете сделать что-то вроде:
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
Вы создаете сопоставления 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();
См. здесь документацию:
Я использую (почти) этот метод расширения для получения 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.