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 后遇到的第一个棘手的问题,把经验分享出来,供大家参考、指点,如果有更好的方法,望高手指点留言
wcf+linq to sql中关联查询返回数据问题的更多相关文章
- LINQ TO SQL 中的join(转帖)
http://www.cnblogs.com/ASPNET2008/archive/2008/12/21/1358152.html join对于喜欢写SQL的朋友来说还是比较实用,也比较容易接受的东西 ...
- Linq To Sql 语法 子查询 & In & Join
子查询 描述:查询订单数超过5的顾客信息 查询句法: var 子查询 =from cin ctx.Customers where ...
- linq to sql中的自动缓存(对象跟踪)
linq to sql中,对于同一个DataContext上下文环境,根据表主键选择记录时(当然这里所指的“记录”会自动转成“对象”),如果该记录已经被select过,默认情况下会被自动缓存下来,下次 ...
- SQL语句关联查询
一:连接类型: 关联查询:只有存在关联的表才能关联查询,完全独立的表之间无法关联 1.关联的类型:自关联,左关联,右关联,全关联(full join)两张表都是主表 2.关联的表:两张以上,以一张(或 ...
- JAVA-Unit03: SQL(基础查询) 、 SQL(关联查询)
Unit03: SQL(基础查询) . SQL(关联查询) 列别名 当SELECT子句中查询的列是一个函数 或者表达式时,那么查询出来的结果集 中对应的该字段的名字就是这个函数或者 表达式的名字.为此 ...
- THINKPHP 中关联查询(多表查询)
THINKPHP 中关联查询(多表查询)可以使用 table() 方法或和join方法,请看示例: 1.Table方法:定义要操作的数据表名称,可以动态改变当前操作的数据表名称,需要写数据表的全名,包 ...
- LINQ to SQL 中 Concat、Union、Intersect、Except 方法的使用
Ø 前言 LINQ to SQL 中需要对两个或多个数据集进行操作,比如:合并.取交集等,主要使用下面四个方法,这四个方法都是 System.Linq.IQueryable<out T> ...
- SQL中Between查询日期时需要注意的地方
SQL中Between查询日期时需要注意的地方 某个表某个字段是Datetime型 以"YYYY-MM-DD 00:00:00" 存放 (1).例如数据 2009-01-22 ...
- Linq to sql中使用DateDiff()
Linq to sql中使用DateDiff() 计算时间差的方法 第一种办法: from p in PurchaseLists where EntityFunctions.DiffDays(p.Cr ...
随机推荐
- Dom文档模型
文档对象模型 通过 JavaScript,您可以重构整个 HTML 文档.您可以添加.移除.改变或重排页面上的项目.要改变页面的某个东西,JavaScript 就需要获得对 HTML 文档中所 ...
- mysql,多对多的hibernate操作对应的jdbc操作
在hibernate中oo思想操作数据库,很方便,但是需要了解一下底层的jdbcsql是怎么写的,复习 多对多的表关系,取出,id为1的学生 订阅了哪些课程? mysql> select c_n ...
- SeuRain的归来
不知不觉二十载寒窗苦读要结束了,还没有到回顾过去的时候.马上进入研三了,现在要努力加油了.还记得曾经的那个在凌晨两点奋战的宇么?归来吧!
- 给产品经理讲技术,不得不懂的TCP和UDP
TCP/IP协议,你一定经常听说吧,其中TCP(Transmission Control Protocol)称为传输控制协议,IP(Internet Protocol)称为因特网互联协议,好吧,这都是 ...
- 下载个jquery-easyui-1.3.0使用,把他导入到myeclipse10里,jquery-1.7.2.min.js报错。 错误如下, Syntax error on token "Invalid Regular Expression Options", no accurate correc
1.选中报错的jquery文件“jquery-1.2.6.min.js”.2.右键选择 MyEclipse-->Exclude From Validation .3.再右键选择 MyEclips ...
- ulimit 命令
用途:ulimit用于shell启动进程所占用的资源. 类别:shell内建命令 语法格式:ulimit [-acdfHlmnpsStvw] [size] 参数: -H 设置硬资源限制. -S 设置软 ...
- g++
用g++编译程序时,-l 与-L各是什么意思?还有-I -l 表示:编译程序到系统默认路进搜索,如果找不到,到当前目录,如果当前目录找不到,则到LD_LIBRARY_PATH等环境变量置顶的路进去查找 ...
- [禅悟人生]"执著"是自缚的茧
宋代苏东坡和佛印禅师是好朋友,他们习惯拿对方开玩笑.有一天,苏东坡到金山寺和佛印禅师打坐参禅,苏东坡觉得身心通畅,于是问禅师道:“禅师!你看我坐的样子怎么样?” “好庄严,像一尊佛!” 苏东坡听了非常 ...
- struts2异常处理,global-results定义全局结果处理
<global-results>定义全局结果处理 一般发生异常之后 结果返回errHandler 因为errHandler是由<global-exception-mappings&g ...
- 让Fragment监听返回键
Activity可以很容易的得到物理返回键的监听事件,而Fragment却不能.所以使用到了以下的方法. 首先创建一个抽象类BackHandledFragment,该类有一个抽象方法onBackPre ...