Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/315.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# 具有延迟加载的BusinessLogic中的NHibernate会话_C#_Nhibernate_Session_N Tier Architecture_Business Logic - Fatal编程技术网

C# 具有延迟加载的BusinessLogic中的NHibernate会话

C# 具有延迟加载的BusinessLogic中的NHibernate会话,c#,nhibernate,session,n-tier-architecture,business-logic,C#,Nhibernate,Session,N Tier Architecture,Business Logic,我目前正在开发一个中型应用程序。应用程序将具有具有不同表示层的n层结构。其中一部分将是web应用程序,但可能还有其他部分处理传感器通信等问题,目前尚不清楚该部分将如何开发 我的问题是,是否可以在业务逻辑层中直接使用NHibernate,并让业务逻辑在延迟加载时向上层和水平层/部分提供请求的数据 是否可以在业务层初始化会话,但仍有延迟加载?在这种情况下,将如何处理会话?是否可以将请求的数据与会话包装在一起,以便只要对象处于活动状态,会话就处于活动状态 祝您有愉快的一天。我不确定是否完全理解您的问题

我目前正在开发一个中型应用程序。应用程序将具有具有不同表示层的n层结构。其中一部分将是web应用程序,但可能还有其他部分处理传感器通信等问题,目前尚不清楚该部分将如何开发

我的问题是,是否可以在业务逻辑层中直接使用NHibernate,并让业务逻辑在延迟加载时向上层和水平层/部分提供请求的数据

是否可以在业务层初始化会话,但仍有延迟加载?在这种情况下,将如何处理会话?是否可以将请求的数据与会话包装在一起,以便只要对象处于活动状态,会话就处于活动状态


祝您有愉快的一天。

我不确定是否完全理解您的问题,但从我收集的信息来看,您在问,当您的客户端不是web客户端时,是否可以使用延迟加载。 答案是肯定的;会话初始化的方式或位置无关紧要

在业务层直接使用nHib被包括我在内的一些人认为是最佳实践

关于“将请求的数据与会话包装在一起,以便只要对象处于活动状态,会话就处于活动状态”的问题- 我不知道你的意思是什么,但是如果你的意思是在会话中发送模型类,这样你的客户端就可以懒散地加载它们的属性,我强烈建议不要去那里。 经验法则是,你只给客户它需要的东西,什么也不给。 我同意。 因此,我认为您应该始终使用DTO与您的客户沟通

我的设置方法是: 客户端从服务器请求数据=>server加载对象,但不初始化延迟加载的属性,填充DTO并将其返回给客户端

客户端请求延迟加载的属性=>服务器使用nHib的第二级或其他缓存机制加载对象,加载请求的属性并向客户端返回DTO