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 ...
随机推荐
- [反汇编练习] 160个CrackMe之025
[反汇编练习] 160个CrackMe之025. 本系列文章的目的是从一个没有任何经验的新手的角度(其实就是我自己),一步步尝试将160个CrackMe全部破解,如果可以,通过任何方式写出一个类似于注 ...
- php字符串与正则表达式试题 Zend权威认证试题讲解
字符串是PHP的“瑞士军刀”——作为一种Web开发语言,PHP最常打交道的就是字符串.因此对于开发者来说,处理字符串是一项非常基础的技能.幸运的是,由于PHP开发团队的努力,PHP对字符串的处理相当易 ...
- 【Python】logging模块学习笔记
因为做接口自动化测试遇到的一个代码逻辑上的问题,又不知道具体问题出在哪里,所以在模块化代码之前,先学习下python的日志模块logging. 入门1 入门2 日志级别大小关系为:CRITICAL & ...
- 用vs2012的命令利用xsd文件生成对应的C#类,把xml的string类型映射到生成的类
输入命令: xsd d:\TDDOWNLOAD\atom-author-link.xsd /c /language:C# /outputdir:d:\ 含义: 将d:\TDDOWNLOAD\atom- ...
- 基于CentOS与VmwareStation10搭建Oracle11G RAC 64集群环境:2.搭建环境-2.6. 安装Oracle所依赖的必要包
2.6. 安装Oracle所依赖的必要包 2.6.1. 检查Oracle所依赖的必要rpm包 [root@localhost /]#rpm -q binutils compat-libstdc elf ...
- linux xampp eclipse xdebug 无法进入断点
一.xampp 版本 1.8.3-5 xampp安装后会自动集成xdebug,目录一般为 /opt/lampp/lib/php/extensions/***-debug-***目录 关于php 与ph ...
- Android服务之Service
android中服务是运行在后台的东西,级别与activity差不多.既然说service是运行在后台的服务,那么它就是不可见的,没有界面的东西.你可以启动一个服务Service来播放音乐,或者记录你 ...
- 使用RoboCopy 命令
经常进行文件管理操作的朋友们,不满意于Windows系统内置的复制功能,因为它太龟速了.于是大家就使用FastCopy.TeraCopy之类的软件来加速复制,但是你是否知道Windows 7已经内置快 ...
- Excel的最大行数
使用Excel2007或Excel2010,在“另存为” 菜单中可以选择为“Excel 07-2003 工作薄”,从中我们可以看出,到了2007版以后,存储格式变了,简单一点从扩展名便可以看出,一个是 ...
- php生成百度新闻源xml
<?php /* http://baike.baidu.com/view/125547.htm#2 百度网新闻开放协议 */ mysql_connect($CFG['db_host'] ,$CF ...