Linq to sql 结】的更多相关文章

----左链接 var LeftJoin = from emp in ListOfEmployees join dept in ListOfDepartment on emp.DeptID equals dept.ID into JoinedEmpDept from dept in JoinedEmpDept.DefaultIfEmpty() select new { EmployeeName = emp.Name;//区别就在这里 选的是左边 还是右边 左边就是左链接 右边就是右链接 Depa…
LINQ to SQL 语句(2)之 Select/Distinct [1] Select 介绍 1 [2] Select 介绍 2 [3] Select 介绍 3 和  Distinct 介绍 Select/Distinct 操作符 适用场景:o(∩_∩) o„ 查询呗. 说明:和 SQL 命令中的 select 作用相似但位置不同, 查询表达式中的 select 及所接子句是 放在表达式最后并把子句中的变量也就是结 果返回回来:延迟. Select/Distinct 操作包括 9 种形式,分…
取得数据库Gateway 要操作数据库,我们首先要获得一个DataContext对象,这个对象相当于一个数据 库的Gateway,所有的操作都是通过它进行的.这个对象的名字是“Linq to SQL Classes文件 名+‘DataContext’”,这里,就是DataClassesDataContext了.它和普通对象一样,直接实 例化就行了.在Demo里我将它实例化为一个静态变量. 取得DataContext对象后,每个数据表就会映射到其一个集合属性,例如Category表映射到 data…
LINQ to SQL语句(1)之Where Where操作 适用场景:实现过滤,查询等功能. 说明:与SQL命令中的Where作用相似,都是起到范围限定也就是过滤作用的 ,而判断条件就是它后面所接的子句. Where操作包括3种形式,分别为简单形式.关系条件形式.First()形式.下 面分别用实例举例下: 1.简单形式: 例如:使用where筛选在伦敦的客户 var q = from c in db.Customers where c.City == "London" select…
适用场景:用于判断集合中元素,进一步缩小范围. Any 说明:用于判断集合中是否有元素满足某一条件:不延迟.(若条件为空,则集合只要不为空就返回True,否则为False).有2种形式,分别为简单形式和带条件形式. 1.简单形式: 仅返回没有订单的客户: var q = from c in db.Customers where !c.Orders.Any() select c; 生成SQL语句为: SELECT [t0].[CustomerID], [t0].[CompanyName], [t0…
LINQ to SQL语句(1)之Where 适用场景:实现过滤,查询等功能. 说明:与SQL命令中的Where作用相似,都是起到范围限定也就是过滤作用的,而判断条件就是它后面所接的子句.Where操作包括3种形式,分别为简单形式.关系条件形式.First()形式.下面分别用实例举例下: 1.简单形式: 例如:使用where筛选在伦敦的客户 var q = from c in db.Customers where c.City == "London" select c; 再如:筛选19…
在我们编写程序中,往往需要一些存储过程,在LINQ to SQL中怎么使用呢?也许比原来的更简单些.下面我们以NORTHWND.MDF数据库中自带的几个存储过程来理解一下. 1.标量返回 在数据库中,有名为Customers Count By Region的存储过程.该存储过程返回顾客所在"WA"区域的数量. ALTER PROCEDURE [dbo].[NonRowset] ()) AS BEGIN SET NOCOUNT ON; DECLARE @count int SELECT…
它基于由 ADO.NET 提供程序模型提供的服务.因此,我们可以将 LINQ to SQL 代码与现有的 ADO.Net 应用程序混合在一起,将当前 ADO.NET 解决方案迁移到 LINQ to SQL. 1.连接 在创建 LINQ to SQL DataContext 时,可以提供现有 ADO.NET 连接.对 DataContext 的所有操作(包括查询)都使用所提供的这个连接.如果此连接已经打开,则在您使用完此连接时,LINQ to SQL 会保持它的打开状态不变.我们始终可以访问此连接…
运算符转换 1.AsEnumerable:将类型转换为泛型 IEnumerable 使用 AsEnumerable<TSource> 可返回类型化为泛型 IEnumerable 的参数.在此示例中,LINQ to SQL(使用默认泛型 Query)会尝试将查询转换为 SQL 并在服务器上执行.但 where 子句引用用户定义的客户端方法 (isValidProduct),此方法无法转换为 SQL. 解决方法是指定 where 的客户端泛型 IEnumerable<T> 实现以替换泛…
对象加载 延迟加载 在查询某对象时,实际上你只查询该对象.不会同时自动获取这个对象.这就是延迟加载. 例如,您可能需要查看客户数据和订单数据.你最初不一定需要检索与每个客户有关的所有订单数据.其优点是你可以使用延迟加载将额外信息的检索操作延迟到你确实需要检索它们时再进行.请看下面的示例:检索出来CustomerID,就根据这个ID查询出OrderID. var custs = from c in db.Customers where c.City == "Sao Paulo" sele…
Null语义 说明:下面第一个例子说明查询ReportsToEmployee为null的雇员.第二个例子使用Nullable<T>.HasValue查询雇员,其结果与第一个例子相同.在第三个例子中,使用Nullable<T>.Value来返回ReportsToEmployee不为null的雇员的ReportsTo的值. 1.Null 查找不隶属于另一个雇员的所有雇员: var q = from e in db.Employees where e.ReportsToEmployee…
1.简单形式 说明:new一个对象,使用InsertOnSubmit方法将其加入到对应的集合中,使用SubmitChanges()提交到数据库. var newCustomer = new Customer { CustomerID = "MCSFT", CompanyName = "Microsoft", ContactName = "John Doe", ContactTitle = "Sales Manager", Ad…
Linq to SQL 语法查询(链接查询,子查询 & in操作 & join,分组统计等) 子查询 描述:查询订单数超过5的顾客信息 查询句法: var 子查询 = from c in ctx.Customers where (from o in ctx.Orders group o by o.CustomerID into o where o.Count() > 5 select o.Key).Contains(c.CustomerID) select c; in 操作 描述:查…
LinQ是指集成化查询语言,通过映射将数据库内的表名变为C#的类名,将列名作为属性名,将表的关系作为类的成员对象.O--M--R O-Object对象(李昌辉)R-Relation关系M-Mapping映射 LinQ包括:LinQ to SQL,针对SQL的查询,它是一个带有可视化的操作界面的ORM工具. LinQ to Object,用来实现对内存中集合对象的查询. LinQ to DataSet,对强类型化或弱类型化的DataSet或独立的DataTable进行查询. LinQ to Ent…
String 类型的字段问题 String类型的字段生成的SQL 没有判断为空的情况时 生成的SQL: 这里判断为空的逻辑很明显不是本来的意思.   左关联 SQL关联中经常会用到左关联,那么Linq中如何做? 那就需要 into 和 .DefaultIfEmpty() 大显身手.   Queryable集合查询过程中不能Select New T 两个相同类型(T )的   Queryable的Groupby使用 Queryable 的使用 如果你不想让数据服务频繁的从数据库中去数据记录到内存中…
首先需要在项目中新增一个 linq  to sql 的服务 新增项,数据,LINQ TO sql 类的这个方法 第二步需要一个model类,用作映射 [Table] public class S_ZDB { //每一个属性都需要加上[Column] [Column] public string ZDMC { get; set; } [Column] public string ZDLX { get; set; } //下面这个属性是主键 [Column(IsPrimaryKey = true)]…
这篇博客将介绍如何使用LINQ TO SQL来创建数据库,以及如何映射Table之间的主外键关系. 我们的数据库表关系如下: Province与City之间1:M,City与Area之间1:M的关系. 下面就通过LINQ TO SQL来创建这样的数据库,以Province表为例, Province Table: using System.Collections.Generic; using System.Data.Linq; using System.Data.Linq.Mapping; nam…
.NET面试题系列目录 名言警句 "理解IQueryable的最简单方式就是,把它看作一个查询,在执行的时候,将会生成结果序列." - Jon Skeet LINQ to Object和LINQ to SQL有何区别? LINQ to SQL可以将查询表达式转换为SQL语句,然后在数据库中执行.相比LINQ to Object,则是将查询表达式直接转化为Enumerable的一系列方法,最终在C#内部执行.LINQ to Object的数据源总是实现IEnumerable<T&g…
1. 单一条件查询 var expr = context.Products .Where(p => p.ProductName == "LINQ to SQL"); SELECT [Extent1].[ProductID] AS [ProductID], [Extent1].[CategoryID] AS [CategoryID], [Extent1].[ProductName] AS [ProductName], [Extent1].[UnitPrice] AS [UnitPr…
1. 一对多 var expr = context.Products .Where(p => p.Category.CategoryName == "LINQ to SQL" && p.UnitPrice > 10m) .Select(p => new { p.ProductID, p.ProductName }); var expr = from p in context.Products where p.Category.CategoryName…
对象标识 运行库中的对象具有唯一标识.引用同一对象的两个变量实际上是引用此对象的同一实例.你更改一个变量后,可以通过另一个变量看到这些更改. 关系数据库表中的行不具有唯一标识.由于每一行都具有唯一的主键,因此任何两行都不会共用同一键值. 实际上,通常我们是将数据从数据库中提取出来放入另一层中,应用程序在该层对数据进行处理.这就是 LINQ to SQL 支持的模型.将数据作为行从数据库中提取出来时,你不期望表示相同数据的两行实际上对应于相同的行实例.如果您查询特定客户两次,您将获得两行数据.每一…
LINQ to SQL支持以下String方法.但是不同的是默认情况下System.String方法区分大小写.而SQL则不区分大小写. 1.字符串串联(String Concatenation) var q = from c in db.Customers select new { c.CustomerID, Location = c.City + ", " + c.Country }; 语句描述:这个例子使用+运算符在形成经计算得出的客户Location值过程中将字符串字段和字符串…
Simultaneous Changes开放式并发控制 下表介绍 LINQ to SQL 文档中涉及开放式并发的术语: 术语 说明 并发 两个或更多用户同时尝试更新同一数据库行的情形. 并发冲突 两个或更多用户同时尝试向一行的一列或多列提交冲突值的情形. 并发控制 用于解决并发冲突的技术. 开放式并发控制 先调查其他事务是否已更改了行中的值,再允许提交更改的技术.相比之下,保守式并发控制则是通过锁定记录来避免发生并发冲突.之所以称作开放式控制,是因为它将一个事务干扰另一事务视为不太可能发生. 冲…
适用场景:适量的取出自己想要的数据,不是全部取出,这样性能有所加强. Take 说明:获取集合的前n个元素:延迟.即只返回限定数量的结果集. var q = ( from e in db.Employees orderby e.HireDate select e) .Take(); 语句描述:选择所雇用的前5个雇员. Skip 说明:跳过集合的前n个元素:延迟.即我们跳过给定的数目返回后面的结果集. var q = ( from p in db.Products orderby p.UnitPr…
原文:Linq to Sql : 并发冲突及处理策略 1. 通过覆盖数据库值解决并发冲突 try { db.SubmitChanges(ConflictMode.ContinueOnConflict); //需要指定为ConflictMode.ContinueOnConflict } catch (ChangeConflictException e) { foreach (ObjectChangeConflict occ in db.ChangeConflicts) { occ.Resolve(…
在本篇中,我们将接着上一篇“LINQ to SQL 和 Entity Framework(上)”的内容,继续使用LINQ to SQL和Entity Framework来实践“解释查询”,学习这些技术的关键特性.我们在此关注的是LINQ to SQL和Entity Framework中的”LINQ”部分,并会比较这两种技术的相同和不同之处.通过我们之前介绍的LINQ知识还有将来会讨论的更多LINQ Operators,相信阅者能针对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…
DataContext类型(数据上下文)是System.Data.Linq命名空间下的重要类型,用于把查询句法翻译成SQL语句,以及把数据从数据库返回给调用方和把实体的修改写入数据库. DataContext提供了以下一些使用的功能: 以日志形式记录DataContext生成的SQL 执行SQL(包括查询和更新语句) 创建和删除数据库 DataContext 是通过数据库连接映射的所有实体的源. 它会跟踪您对所有检索到的实体所做的更改,并且保留一个“标识缓存”,该缓存确保使用同一对象实例表示多次…
例如,下面一段代码,当两个线程同时访问时会出现各种由于线程不同步而导致的问题,比如什么DataReader已打开未关闭啊,已经添加了重复的键啊等等. /// <summary> /// 当前数据上下文,非线程安全 /// </summary> static AouUnionPayDataContext db = new AouUnionPayDataContext(connStr); /// <summary> /// 此处是并发发生错误的方法,当两个线程访问时会出错…
议程 1.LINQ To SQL概述 2.LINQ To SQL对象模型 3.LINQ To SQL查询 用到的数据库 SQL Server 2005,数据库名为Test. 两张表,分别为Student学生表和Score成绩表   LINQ To SQL概述 在 LINQ to SQL 中,关系数据库的数据模型映射到用开发人员所用的编程语言表示的对象模型.当应用程序运行时,LINQ to SQL 会将对象模型中的语言集成查询转换为 SQL,然后将它们发送到数据库进行执行.当数据库返回结果时,LI…