【发布时间】:2011-02-21 06:39:45
【问题描述】:
目前,我们有一个无法维护的代码球,它提供了第三方应用程序的接口。第三方应用程序有一个必须用于创建新条目的 COM 程序集。此过程包括两个步骤:生成一个新对象(基本上是一个 ID),并使用新的字段值更新该对象。
因为 COM 互操作非常慢,我们只使用它在数据库中生成 ID(和相关对象)。实际更新是使用常规 SQL 查询完成的。
我想弄清楚是否可以使用 NHibernate 为我们完成一些繁重的工作,而无需绕过 COM 程序集。这是我设想的将某些内容保存到数据库的代码:
using(var s = sessionFactory.OpenSession())
using(var t = s.BeginTransaction())
{
MyEntity entity = new MyEntity();
s.Save(entity);
t.Commit();
}
我会说常规 NH 代码。现在,这就是棘手的地方。我认为我必须提供自己的 NHibernate.Id.IIdentifierGenerator 实现,它在 Generate 方法中调用 COM 程序集。这不是问题。问题是 COM 程序集需要初始化,这确实需要一些时间。出于某种原因,它也不喜欢同一进程中的多个实例。
我想知道的是是否有办法在生成器代码中正确访问外部服务。
我可以随意使用任何我想要的技术,所以如果它涉及到诸如 IoC 容器之类的东西,那也没问题。我正在寻找的是在哪里连接我的代码,这样我就可以在我的生成器中访问我需要的东西,而不必求助于使用单例或其他讨厌的东西。
【问题讨论】:
标签: nhibernate com generator