【问题标题】:Generate HBM files using mapping by code使用代码映射生成 HBM 文件
【发布时间】:2011-12-29 22:56:28
【问题描述】:

我正在通过代码使用 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文件。

我怎样才能做到这一点?

【问题讨论】:

  • 谢谢,我将映射部分提取到一个返回 HbmMapping 对象的新方法中。所以我可以使用它并在单元测试中调用 AsString。

标签: nhibernate nhibernate-mapping


【解决方案1】:

两种方式:-

//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();  

【讨论】:

    【解决方案2】:

    使用 AsString() 扩展方法:

    domainMapping.AsString()
    

    它将为您提供可以保存到文件中的 xml。您可以调用该方法,例如在构建 SessionFactory 之前。

    【讨论】:

      猜你喜欢
      • 2016-12-02
      • 2017-01-09
      • 1970-01-01
      • 1970-01-01
      • 2010-10-28
      • 1970-01-01
      • 2012-11-16
      • 2016-12-11
      • 2021-11-30
      相关资源
      最近更新 更多