欢迎来到Doc100.Net免费学习资源知识分享平台!
您的位置:首页 > 程序异常 >

wcf+linq to sql中关联查询返回数据有关问题

更新时间: 2014-01-05 02:07:27 责任编辑: Author_N1

 

wcf+linq to sql中关联查询返回数据问题

前段时间准备采用wcf+nh框架开发sl程序,发现采用nh开发不适合我的中型、并且快速开发项目,所以综合考量了下,决定采用wcf+linq to sql 。

但是此模式也有缺点,也是linq to sql的缺点,查询语句写起来比较复杂(),只有边摸索,边开发了。

所以第一步就是搭建wcf:,目前我采用的wcf寄宿在一个winform程序,并采用tcp协议(考虑效率问题)。

第二步:在wcf服务项目中添加linq to sql 类。

 

在实现wcf 时,我有个user表和rose表,两个表是关联表,usr表中外键是roseid,在查询用户时,需要关联rose表,由于通过linq to sql 创建的实体类,所以无法通过linq to sql 类实体了,网上搜了些资料,没找到办法,后来自己想到了两个办法:

(1)采用视图:即在数据库中再建一个user和rose的关联视图,然后通过linq tosql 实现此关联视图类及相应方法,此方法可行但是可能会遇到一个问题就是效率问题

(2)第二个方法就是自己建一个类user_rose(在wcf服务中建),这个类放需要从user表和rose表关联的字段的相应的属性,然后在wcf服务中利用linq tosql 查询,查询语句如下:

           MonitorDataClassesDataContext     db = new MonitorDataClassesDataContext();
            var query = from t_User in db.t_User
                        join t_Rose in db.t_Rose on t_User.RoseID equals t_Rose.RoseID into t_Rose_join
                        from t_Rose in t_Rose_join.DefaultIfEmpty()
                        where
                          t_User.UserID == userid
                        select new UserRose
                        {
                            UserID= t_User.UserID,
                            UserName= t_User.UserName,
                            PWD= t_User.PWD,
                            RoseID= t_User.RoseID,
                            fdsz= t_User.fdsz,
                            CreateDate= t_User.CreateDate,
                            SJDLID= t_User.SJDLID,
                            RoseName = t_Rose.RoseName
                        };
            return query.ToList<UserRose>();

经测试完全ok,这是采用wcf+ linq to sql 后遇到的第一个棘手的问题,把经验分享出来,供大家参考、指点,如果有更好的方法,望高手指点留言
上一篇:上一篇
下一篇:下一篇

 

随机推荐程序问答结果

 

 

如对文章有任何疑问请提交到问题反馈,或者您对内容不满意,请您反馈给我们DOC100.NET论坛发贴求解。
DOC100.NET资源网,机器学习分类整理更新日期::2014-01-05 02:07:27
如需转载,请注明文章出处和来源网址:http://www.doc100.net/bugs/t/5878/
本文WWW.DOC100.NET DOC100.NET版权所有。