NHibernate:如何在运行时重新配置映射?

时间:2010-03-26 19:56:46

标签: .net nhibernate fluent-nhibernate

让我们首先解决这个问题:我知道SessionFactory是不可变的 - 我正在尝试在运行时更改配置并重新生成ISessionFactory。

具体来说,我有一个Customer映射,它会在运行时将一些字段添加到其动态组件节点。我想做这样的事情

var newSessionFactory = previousConfiguration
  .RemoveClassMapping(typeof(Customer))
  .AddXmlString(newMappingForCustomer)
  .BuildSessionFactory();

但是,我没有看到任何明显的方法来删除映射,我还能做些什么来重新生成整个配置吗?

1 个答案:

答案 0 :(得分:1)

这是不可能的。您必须重新生成Configuration

我最初的建议是为您的模型选择不同的策略。

但是,如果您决定使用此:-),您可以:

  • 创建“部分”Configuration(不包括Customer
  • 将其序列化为MemoryStream
  • 如果需要,添加“基本”Customer映射
  • 创建临时SessionFactory
  • 检索映射Customer
  • 所需的任何信息
  • 反序列化已保存的Configuration
  • 添加Customer映射并创建最终的SessionFactory