使用Entity Framework和WCF Ria Services开发SilverLight之6:查找指定字段

对数据库表指定字段的查找,又是实际工作中的一项必要工作。SL客户端仅获取实际需要的指定的字段,好处很多,比如:有助于减少网络流量。

有两类这样的使用场景。

1:联表查询不需要外键表

在上一篇中,我们使用了联表查询,在联表查询中,DAL部分的代码是这样的:

我们已经指出,无论是你是否使用Include方法,只要实体类指定了Include特性,客户端都会获取到被关联的Course记录。诚然,有时候我们需要满足联表查询,但是其他时候我们不需要。

2:单表中仅仅需要部分字段

比如:一个表有5个字段,我仅需要返回两个字段。

3:实现

要满足这样的需求,仅仅需要修改DAL部分。

第一种需求,取出指定字段:

这段代码所生成的SQL语句如下:

SELECT

[Extent1].[DepartmentID] AS [DepartmentID],

[Extent1].[Name] AS [Name]

FROM [dbo].[Department] AS [Extent1]

可以发现,EF只为我们查询两个字段。并且,EF也没有为我们自动关联Course表的数据。

注意,在这段代码中,我们先select new了一个匿名类型,这样就绕过了DbContext中的DbSet<T>对于Department类型校验。如果我们想当然的将这段代码写成:

那么,我们会发现无法获取数据,跟踪错误,会发现:

{"The entity or complex type ‘SchoolData.Department‘ cannot be constructed in a LINQ to Entities query."}    System.SystemException {System.NotSupportedException} 
最终运行的效果如下:

回过头来说,如果既要指定字段,又要联表查询,应该怎么做呢?如下:

最终运行效果如下:

由于本部分的代码在上一篇中修改而成,故不再提供下载。

PS:整了一圈回来,才发现DUDU已经把这个问题研究的很深刻了,在:

http://www.cnblogs.com/dudu/archive/2011/04/01/entity_framework_select_new_ok.html

http://www.cnblogs.com/dudu/archive/2011/03/31/entity_framework_select_new.html

时间: 2024-11-03 21:28:40

使用Entity Framework和WCF Ria Services开发SilverLight之6:查找指定字段的相关文章

Silverlight项目笔记1:UI控件与布局、MVVM、数据绑定、await/async、Linq查询、WCF RIA Services、序列化、委托与事件

最近从技术支持转到开发岗,做Silverlight部分的开发,用的Prism+MVVM,框架由同事搭好,目前做的主要是功能实现,用到了一些东西,侧重于如何使用,总结如下:   1.UI控件与布局     2.MVVM     3.数据绑定     4.await/async     5.Linq查询     6.WCF RIA Services     7.序列化     8.委托与事件 1.UI控件与布局 常用的主要是Grid.StackPanel.Border,其中最常用的的是Grid,是一

.svc处理程序映射缺失导致的WCF RIA Services异常

在确定代码.编译结果和数据库都正常的情况下,无法从数据库取到数据.错误提示:Sysyem.Net.WebException:远程服务器返回了错误:NotFound,监听发现请求数据库的服务异常,访问相关地址HTTP404错误. 向数据库发起的请求异常 访问svc地址后的错误信息 在确定其他各方面正常,并且修复了一遍vs,各种IIS设置检查后依然没有找到原因,而且工程在同事电脑上能够正常运行,最后确定只可能是.Net Framework或者IIS有问题,因为之前同事在机器上装测试工具,安装了.Ne

Entity Framework在WCF中序列化的问题

问题描述 如果你在WCF中用Entity Framework来获取数据并返回实体对象,那么对下面的错误一定不陌生. 接收对 http://localhost:5115/ReService.svc 的 HTTP 响应时发生错误.这可能是由于服务终结点绑定未使用 HTTP 协议造成的. 这还可能是由于服务器中止了 HTTP 请求上下文(可能由于服务关闭)所致.有关详细信息,请参见服务器日志. 这就是因为在返回数据的时候,序列化失败,导致WCF服务自动停止了. 为什么会序列化失败 为了方便说明,我们先

使用Entity Framework 4进行代码优先开发

[原文地址]Code-First Development with Entity Framework 4   .NET 4随带发布了一个改进版的Entity Framework(EF)- 一个位于System.Data.Entity命名空间的数据访问函数库. 当Entity Framework在.NET 3.5 SP1里第一次发布的时候,很多程序员给我们提供了反馈,指出他们认为在第一个版本中不足的地方.SQL团队积极听取这些意见,并且在.NET 4的版本里吸取了意见. EF4里一些重大改进包含有

N-Tier Entity Framework开源项目介绍

           N-Tier Entity Framework是一个基于微软Entity Framework的N层.NET解决方案. 并且与以下这此技术点无缝集成了: § WCF RIA Services § WCF Data Services § ASP.NET Web API § Data Validation (DataAnnotation) 项目引用了 T4 Toolbox Silverlight SDK (for Silverlight and/or WCF RIA Servic

WCF RIA SERVICE相关技术

WCF RIA SERVICE实体属性拷贝 private void DoSubmit() { ((IEditableObject)this.RepairContract).EndEdit(); var domainContext = new DmsDomainContext(); var newRepairContract = new RepairContract(); domainContext.RepairContracts.Add(newRepairContract); newRepai

浅谈Entity Framework中的数据加载方式

小分享:我有几张阿里云优惠券,用券购买或者升级阿里云相应产品最多可以优惠五折!领券地址:https://promotion.aliyun.com/ntms/act/ambassador/sharetouser.html?userCode=ohmepe03 如果你还没有接触过或者根本不了解什么是Entity Framework,那么请看这里http://www.entityframeworktutorial.net/EntityFramework-Architecture.aspx,其中的一系列文

LINQ之路 9:LINQ to SQL 和 Entity Framework(上)

在上一篇中,我们从理论和概念上详细的了解了LINQ的第二种架构“解释查询”.在这接下来的二个篇章中,我们将使用LINQ to SQL和Entity Framework来实践“解释查询”,学习这些技术的关键特性.在本系列文章中,我不准备事无巨细的讨论LINQ to SQL和Entity Framework的方方面面,毕竟那样需要太多的篇幅,也会让我们从LINQ上面转移注意力,况且,园子里也有不少介绍LINQ to SQL和Entity Framework的好文章.我们在此关注的是LINQ to S

Oracle中使用Entity Framework 6.x Code-First

Oracle中使用Entity Framework 6.x Code-First方式开发 去年写过一篇EF的简单学习笔记,当时EF还不支持Oracle的Code-First开发模式,今天无意又看了下Oracle官网,发现EF6.X已经支持了,并且给出了二篇教程(英文版): 1.Using NuGet to Install and Configure Oracle Data Provider for .NET 2.Entity Framework Code First and Code First