Генерируйте файлы HBM, используя отображение по коду - PullRequest
2 голосов
/ 29 декабря 2011

Я использую отображение NHibernate по коду и создаю фабрику сессий следующим образом:

            var mapper = new ModelMapper();
        mapper.AddMappings(Assembly.GetExecutingAssembly().GetExportedTypes());

        HbmMapping domainMapping = mapper.CompileMappingForAllExplicitlyAddedEntities();

        const bool executeScript = false;

        var configuration = new Configuration();
        configuration.DataBaseIntegration(c =>
                                              {
                                                  c.Dialect<MsSql2005Dialect>();
                                                  c.ConnectionString =
                                                      ConfigurationManager.ConnectionStrings["ShopConnectionString"]
                                                          .ConnectionString;
                                                  c.KeywordsAutoImport = Hbm2DDLKeyWords.AutoQuote;
                                              });
        configuration.AddMapping(domainMapping);

         _sessionFactory = configuration.BuildSessionFactory();

Мне нужно получить соответствующие файлы HBM.

Как ядостичь этого?

Ответы [ 2 ]

4 голосов
/ 29 декабря 2011

Два способа: -

//This will write all the XML into the bin/mappings folder  
mapper.CompileMappingForEachExplicitlyAddedEntity().WriteAllXmlMapping();  

Остерегайтесь этого метода, описанного выше, так как ваше приложение asp.net будет перезагружаться при обнаружении изменений в папке bin, другой способ: -

var mapping = mapper.CompileMappingForAllExplicitlyAddedEntities();  
//you could add a breakpoint here!   
var mappingXml = mapping.AsString();  
1 голос
/ 29 декабря 2011

Используйте метод расширения AsString ():

domainMapping.AsString()

Это даст вам XML, который вы можете сохранить в файл. Вы можете вызвать этот метод, например, перед созданием SessionFactory.

...