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

发布于 2024-08-26 08:18:19 字数 360 浏览 3 评论 0原文

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

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

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

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

Let's get this out of the way first: I know that SessionFactory is immutable - I'm trying to change the Configuration at runtime and regenerate ISessionFactory.

Specifically, I have a Customer mapped that will have some fields added to its dynamic-component node at runtime. I would like to do something like this

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

However, I don't see any obvious way to remove a mapping, is there anything I can do short of regenerating the entire Configuration?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

不必在意 2024-09-02 08:18:19

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

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

但是,如果您决定这样做:-),您可以:

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

It's not possible. You'll have to regenerate the Configuration.

My initial suggestion would be that you choose a different strategy for your model.

However, if you are determined to go with this :-), you can:

  • Create a "partial" Configuration (that does not include Customer)
  • Serialize it to a MemoryStream
  • Add the "base" Customer mapping, if needed
  • Create the temporary SessionFactory
  • Retrieve whatever information you need to map Customer
  • Deserialize your saved Configuration
  • Add the Customer mapping and create your final SessionFactory
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文