困扰了很久的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()){//获取数据或绑定代码},还是不行 --------------------编程问答--------------------
谢谢!
自己顶起来先! --------------------编程问答-------------------- ^ō^ UP, 爱莫能助! 没有用过城堡.ORM... --------------------编程问答--------------------
谢谢,虽然没有实质性帮忙,但还是谢谢你的关注! --------------------编程问答-------------------- 有谁知道吗? --------------------编程问答-------------------- 用XPO的飘过帮顶! --------------------编程问答-------------------- 谢谢楼上的!
补充:.NET技术 , C#