Linq To Sql进阶系列(一)-从映射讲起

本系列,或多或少,直接或间接依赖入门系列知识。但,依然追求独立成章。因本文作者水平有限, 文中错误难免,敬请读者指出并谅解。本系列将会和入门并存。

案例

某君被邀为一超市设计数据库,用来存储数据。该君根据该超市中实际出现的对象,设计了 Customer, Employee,Order, Product等表,用来保存相应的客户,员工,订单,货品等。太好了,该 君很有oo的思想吗。

如果,你被要求用类及对象,来描述该关系型数据,你该如何做呢?在linq推出之前,ADO.NET被用 来做数据访问层。而后,程序员需要自己去编写事务逻辑层中所出现的类。比如,Customer, Employee ,Order, Product等。然后,程序员组装所需的sql语句,通过ADO.NET,将返回的记录,来初始化 Customer等类的对象。在这里,你已经自己动手将Customer表和Customer类关联了起来。从Linq To Sql 的设计来看,它主要是为了解决data!=objects 的问题而产生的。现在,有了Table和Class之间的映射 ,数据和对象之间就可以有一个一一对应的关系了。

在Linq To Sql之前,在java领域有Hibernate,在net领域有NHibernate技术,来实现 object/relational 持久和查询服务。无论是Hibernate还是NHibernate,其配置复杂,上手时间长,已 经不能适应快速开发的需要。而Linq To Sql的推出,恰恰弥补了它们的缺点,彻底降低了程序开发门槛 。

Linq

Linq是Language Integrated Query的缩写。Linq To Sql是linq中的一部分,其与ADO.NET Orcas的 关系入下。

现在linq分三个部分。Linq To Objects,即以前的linq。其主要是针对CLR-Based Objects的查询。 即内存操作。Linq Enabled ADO.NET是针对关系型数据的。这又包含三个部分。Linq To Datasets, Linq To Sql, Linq To Entities. 其中Linq To Sql 是大家所熟悉的部分,即以前的Dlinq. 官方的解 释是,Linq To Datasets, support for ADO.NET Datasets; Linq to SQL, support for SQL Server; Linq to Entities, Support fro Entity Data Model. 记得,以前曾有人问及dlinq与ADO.NET Orcas的 关系,因为它们隶属于不同的队伍开发,其中有重叠的部分。而现在,其功能归结在一起,其重叠部分 已经得到融合。(如果有人是ADO.NET team或熟悉这个的,开辟专栏给我们大家讲一下呀。)最后一部 分叫Linq To XML,即以前的Xlinq. 针对xml格式数据的操作。(还有针对ASP.NET的Blinq, 大声问一下 ,有没有人懂这个呀)

时间: 2024-08-17 21:55:01

Linq To Sql进阶系列(一)-从映射讲起的相关文章

Linq To Sql进阶系列

Linq To Sql进阶系列(七)动态查询续及CLR与SQL在某些细节上的 Linq To Sql进阶系列(六)用object的动态查询与保存log篇 Linq To Sql进阶系列(五)Store Procedure篇 Linq To Sql进阶系列(四)User Define Function篇 Linq To Sql进阶系列(三)CUD和Log Linq To Sql进阶系列(二)M:M关系 Linq To Sql进阶系列(一)-从映射讲起

Linq To Sql进阶系列(七)动态查询续及CLR与SQL在某些细节上的差别

在上面一篇文章Linq To Sql进阶系列(六)中,我们提到了使用object的动态查询.本文在上文的 基础上,再做更加深入的引申.同时修正上文中一些不妥的地方. 1, object的动态查询续 首先要做的事情,就是将Find的函数改成扩展方法.扩展方法只能放在静态类里,而且它的第一个参 数必须带this关键字.在上文中,作者留下了一个迷题.当需要or条件时,又该如何做呢?本文也将这 个问题给出回答.但是对于动态Like的条件,笔者依然还没有找到一个较好的方法.为了增加or条件, 函数的声明也

Linq To Sql进阶系列(五)Store Procedure篇

Store Procedure,存储过程.也是被别人写过的东西.我习惯性先看别人都写了点啥,然后才开始 想看看自己还要写点啥.那就先谈谈它与udf的区别吧. 在Linq To Sql进阶系列(四)User Define Function篇 中,我们提到了两者的差别.比如Store Procedure支持多个rowset的,而udf不行.他们还有一些其他的差别.Store Procedure只能返回整型, 而udf可以是其他类型,比如char等,除个别类型外,比如imager类型,是不可以做为ud

Linq To Sql进阶系列(二)M:M关系

在Linq To Sql进阶系列(一) 一文中,我们谈到了数据库中的两种基本关系1:M 与1:1. 而现实世 界中,还有一种M:M 的关系.比如,一个老师可以有多个学生,而一个学生也可以有多个老师.老师和 学生的关系就是多对多的关系.这些关系在数据库中是如何反映的呢? 在C#3.0入门系列(十)-之Join操作一文中,我们提到了M:M 的关系中的join操作.哦,原来,M:M 的关系在数据库中,依然是通过1:M 来体现.比如,在一个域内,一个User可以加入到多个Group中,一 个Group也

Linq To Sql进阶系列(四)User Define Function篇

User Define Function, 用户自定义函数,简称UDF. 关于sql server中的udf,请大家参考 http://msdn.microsoft.com/msdnmag/issues/03/11/DataPoints/一文.本文主要阐述,在Linq To Sql 中,如何使用UDF. 1,UDF 简介 UDF可以分为两中类型.一种为Scalar Valued Function,简称为SVF,是返回值类型的UDF. 另一种 为Table Valued Function 简称为T

Linq To Sql进阶系列(六)用object的动态查询与保存log篇

动态的生成sql语句,根据不同的条件构造不同的where字句,是拼接sql 字符串的好处.而Linq的推 出,是为了弥补编程中的 Data != Object 的问题.我们又该如何实现用object的动态查询呢? 1,用object的查询是什么? 我们可以简单的举这么一个例子.我们到公安局查找一个人.首先,我们会给出他的一些特征,比如 ,身高多少,年龄多少,性别,民族等.那么,我们把这个人的一些特征输入电脑.我们希望,电脑能 给我们返回这个人的信息.而实际上,有相同特征的人太多了,常常返回一个集

Linq To Sql进阶系列(三)CUD和Log

CUD就是Create, Update, Delete.在别人都写过了后,还有什么是新鲜的呢? 1,CreateDatabase Northwind db = new Northwind("You connection string"); //注意database项,起一个 不存在的数据库名称 db.Log = Console.Out; if (!db.DatabaseExists()) //如果,数据库不存在 db.CreateDatabase(); //创建数据库 这个的好处,就是

Linq To SQL下实现动态表名的映射

提出问题 前段时间,在博客园里看到有位朋友,问如何实现在动态表名.我们都知道,把一个实体类映谢到表 里,应该这样写: [Table(Name = "User")] class User { [Column] public int ID; [Column] public string Name; } 很明显,这里的表名是写死的,有些时候,我们可能要根据不同的情况实现不同的表名 里加个前缀或者后缀,例如: tt_User,aa_User,User1.User2. 分析问题 要解决这个问题,

Linq之Linq to Sql

目录 写在前面 系列文章 Linq to sql 总结 写在前面 上篇文章介绍了linq to xml的相关内容,linq to xml提供一种更便捷的创建xml树,及查询的途径.这篇文章将继续介绍linq to sql的内容.个人觉得linq to sql在实际开发中在中小型项目中用的比较多,在中小型项目用ef或者nhibernate这些orm确实有点重量级.Linq to Sql提供了丰富的功能,完全可以满足日常数据访问的需求.使用方法也非常简单.灵活. 系列文章 Linq之Lambda表达