当前位置:编程学习 > C#/ASP.NET >>

困扰了很久的castle ORM --no session问题,请高手指教!

先描述一下背景:
环境:C#下三层架构的解决方案,而且是远程调用,基于web service。
在服务端为业务逻辑和数据访问操作层,保存、删除、修改、获取数据等都在这。
在客户端为表示界面层。
客户端调用服务端的逻辑全部通过公共接口。
现在情况是:
有两个表是一对多关系,对应实体类也是一对多,其中定义了延迟加载Lazy=true,
通过客户端调用相应接口,服务端返回一个列表,客户端把此列表绑定到表格控件数据源,
出现 “Failed to lazily initialize a collection - no session”,
google了一下,网上也有类似介绍,说加了using(new SessionScope()){......};即可解决问题。
我于是把这条语句套上去,结果错误依旧。
我分析了一下,估计是这样,网上介绍的跟我的环境有很大区别,网上介绍的例子的所有操作都在using(new SessionScope()){...所有操作}的大括号里完成,而我的是先在服务端得到结果再在客户端绑定到数据源,整个操作分布在不同的层面,而同一个session不可能跨层存在,所以导致no session。不知道我分析对不对,请高手指教,同时希望高手给出解决办法。

--------------------编程问答-------------------- 大概情景:
接口:
public inte易做图ce Idata
{
   IList getList();
}

服务端server:
public class data : Idata
{
    IList getList(){...;}
}

客户端client:

Idata dd=xxxFactory.getServic<Idata>();
IList list=dd.getList();
DataGridView1.DataSource=list; --------------------编程问答-------------------- mark --------------------编程问答-------------------- 修改补充,红色为修改
大概情景: 
接口: 
public inte易做图ce Idata 

   IList getList(); 


服务端server: 
public class data : Idata 

    IList getList(){...;} 


客户端client: 

Idata dd=xxxFactory.getServic <Idata> (); 
IList list=dd.getList(); 
BindingSource bs=new BindingSource();
bs.DataSource=list;
DataGridView1.DataSource=bs;//到这里会提示Failed to lazily initialize a collection - no session
尽管服务端和客户端我加了using(new SessionScope()){//获取数据或绑定代码},还是不行 --------------------编程问答--------------------
引用 2 楼 shinaterry 的回复:
mark


谢谢!
自己顶起来先! --------------------编程问答-------------------- ^ō^ UP, 爱莫能助! 没有用过城堡.ORM... --------------------编程问答--------------------
引用 5 楼 shinaterry 的回复:
^ō^ UP, 爱莫能助! 没有用过城堡.ORM...


谢谢,虽然没有实质性帮忙,但还是谢谢你的关注! --------------------编程问答-------------------- 有谁知道吗? --------------------编程问答-------------------- 用XPO的飘过帮顶! --------------------编程问答-------------------- 谢谢楼上的!
补充:.NET技术 ,  C#
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,