Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/259.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/svn/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# ActiveRecord/NHibernate:在不知道持久性的上下文中处理惰性集合_C#_Castle Windsor_Castle Activerecord - Fatal编程技术网

C# ActiveRecord/NHibernate:在不知道持久性的上下文中处理惰性集合

C# ActiveRecord/NHibernate:在不知道持久性的上下文中处理惰性集合,c#,castle-windsor,castle-activerecord,C#,Castle Windsor,Castle Activerecord,我的web应用程序(MonoRail、Windsor、ActiveRecord)有一个Startable导入服务和一个或多个Startable导入读取器。例如,当文件被放到目录中时,读取器解析文件,将数据传递给服务,服务通过存储库更新和/或创建对象。我遇到的问题是,这些可启动服务位于请求范围之外(从开始到结束都有一个SessionScope),因此当服务遇到一个惰性集合时,周围没有SessionScope来帮助它发挥作用。提示LazyInitializationException:) 有什么好办

我的web应用程序(MonoRail、Windsor、ActiveRecord)有一个Startable导入服务和一个或多个Startable导入读取器。例如,当文件被放到目录中时,读取器解析文件,将数据传递给服务,服务通过存储库更新和/或创建对象。我遇到的问题是,这些可启动服务位于请求范围之外(从开始到结束都有一个SessionScope),因此当服务遇到一个惰性集合时,周围没有SessionScope来帮助它发挥作用。提示LazyInitializationException:)


有什么好办法解决这个问题吗?也许使用拦截器围绕处理数据的方法创建和处理会话范围?为存储库配备执行即时抓取的方法?我想让服务不知道ActiveRecord,因为我的依赖偏执狂说我们可能希望有一天使用不同的持久性机制。

您已经回答了:

使用拦截器创建和 在服务器周围放置一个会话范围 处理数据的方法


嗯,是的。。。这肯定比写那些急于抓取的HQL之类的东西更整洁。添加了一点配置,但它是可管理的。你知道如何/如果我可以配置一个拦截器来截取一个特定的方法,而不必将其编码到拦截器本身吗?你可以让拦截器获取一个字符串参数,该参数是要截取的方法的名称。。。然后为每个可拦截组件分配一个不同的拦截器实例。另一个选项是使用属性装饰可拦截方法,然后从拦截器中检查该属性。这里很难讨论这个问题。。。请在论坛()或谷歌群组()上再次询问