取得数据库Gateway

要操作数据库,我们首先要获得一个DataContext对象,这个对象相当于一个数据 库的Gateway,所有的操作都是通过它进行的。这个对象的名字是“Linq to SQL Classes文件 名+‘DataContext’”,这里,就是DataClassesDataContext了。它和普通对象一样,直接实 例化就行了。在Demo里我将它实例化为一个静态变量。

取得DataContext对象后,每个数据表就会映射到其一个集合属性,例如Category表映射到 dataContext.Categories,这是一个集合属性,每一个元素是一个实体类,代表此表中的一条 记录。实体类名和表名相同。实体类的字段自然就映射到对应表的字段。

还有一点需要注意,数据库中的一对多关系,在Linq to SQL生成代码时会自动表示到类结 构中。并且,这种关联是双向的。例如,Category与Bulletin的一对多关系,到了类结构中, 反映成如下形式:在Category类中,有一个名为Bulletins的集合属性,内容是所有属于此 Category的Bulletin对象的引用。而在Bulletin类中,也会有个Category1属性(由于Category 这个名字被我们用了,所以,这个关联属性自动加了个“1”),其内容是此Bulletin所属 Category对象的引用。

Insert操作

Insert用于向数据库添加记录。一般情况下,使用“DataContext.表映射集 合.InsertOnSubmit(实体类)”的方式就可以完成Insert操作。不过这里要注意一点,由于Linq to SQL使用了“Unit of Work”模式,所以,对数据库的操作不会立即提交到数据库,而要调 用DataContext的SubmitChanges方法,所有改动才会被提交到数据库。

Delete操作

Delete操作用于从数据库中删除记录。表映射集合的DeleteOnSubmit方法可以实 现这个操作。这个方法需要一个参数,就是要删除的实体类,这里不能直接传个ID去删除,要 首先通过ID找到相应实体类,传给DeleteOnSubmit再删除。当然最后不要忘了SubmitChanges。

Update操作

Update操作用于更新数据库中某已存在记录的信息。在Linq to SQL中,Update操 作就是首先加载相应的实体类,修改其相应字段后,SubmitChanges就可以了。

Select操作

Select操作用于从数据库中返回指定的记录。在Linq to SQL中,查询结果都是以实体类或 实体类集合的方式返回的。其中实体类集合并不是List,如果想转为List,只需在返回结果上 调用ToList方法即可。

如果是查询单一记录,建议使用表映射集合的Single方法。至于查询参数,建议采用lambda 表达式。如果你对lambda表达式不熟,可以参考这里http://msdn.microsoft.com/zh- cn/library/bb397687.aspx

其它相关示例代码

常用Select操作举例

取得单个记录(ID为3的分类)

RETURNDATACONTEXT.CATEGORIES.SINGLE(C=>C.ID==3;

取得全部记录(全部分类)

RETURNDATACONTEXT.CATEGORIES;

得部分记录(所属分类ID为3的公告,按ID降序排列)

RETURNFROMB<indatacontext.bulletins

<whereb.category==3 <p="">orderbyb.IDdescending

selectb;

取得部分记录并分页,最后转换为List(所属分类ID为3的公告并分页,pageSize为每页多 少条记录,pageNo为第几页)

varbulletins=frombINDATACONTEXT.BULLETINS

<whereb.category==3 <p="">orderbyb.IDdescending

selectb;

<returnbulletins.skip(pagesize*(pagenumber-1)).take(pagesize).tolist();< pre="">

参考资料: http://developer.51cto.com/art/200904/120915_1.htm

LINQ to SQL 基础的更多相关文章

  1. Linq to SQL 基础篇

    LinqtoSqlDataContext Linq = new LinqtoSqlDataContext(ConfigurationManager.ConnectionStrings["sz ...

  2. Linq to sql与EF零碎知识点总结

    ------------------------------第一天(2013-3-25) 1.ado.net实体模型,(Ef) 2.创建上下文对象: 调用相应方法,最后调用.savechanges() ...

  3. LINQ体验(11)——LINQ to SQL语句之Null语义和String/DateTime方法

    在本系列中.主要介绍LINQ to SQL基础的东西,由于LINQ太强大了,它对我们寻常使用不同的数据源有着不同的内容,其包含对于SQL Server 数据库的LINQ to SQL:对于XML 文档 ...

  4. 讲讲Linq to SQL映射(基础篇)

    讲讲Linq to SQL映射(基础篇) 这篇主要讲Linq to  SQL基于属性的映射.即映射数据库,映射表,映射列,映射关系,映射存储过程, 映射函数.然而创建这种映射有三种方法,他们分别是OR ...

  5. LINQ基础 之 LINQ TO SQL (二)

    配置LINQ TO SQL 首先添加一个Linq to sql文件,以.dbml结尾的文件.无法把表拖拽到.dbml文件中,提示“所选对象使用不支持的数据提供程序” 解决方案 在服务器资源管理器中右键 ...

  6. Linq To sql入门练习 Lambda表达式基础

    using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...

  7. LINQ to SQL大全

    LINQ to SQL语句 (1)之Where Where操作 适用场景:实现过滤,查询等功能. 说明:与SQL命令中的Where作用相似,都是起到范围限定也就是过滤作用的,而判断条件就是它后面所接的 ...

  8. [转]LINQ To SQL 语法及实例大全

    转载自:http://blog.csdn.net/pan_junbiao/article/details/7015633 LINQ to SQL语句(1)之Where Where操作 适用场景:实现过 ...

  9. LINQ to SQL语句非常详细(原文来自于网络)

    LINQ to SQL语句(1)之Where Where操作 适用场景:实现过滤,查询等功能. 说明:与SQL命令中的Where作用相似,都是起到范围限定也就是过滤作用的,而判断条件就是它后面所接的子 ...

随机推荐

  1. div+css知识点

    前端书写规范: 1.所有书写均在英文半角状态下的小写: 2.id,class必须以字母开头: 3.所有标签必须闭合: 4.html标签用tab键缩进: 5.属性值必须带引号: 6.<!-- ht ...

  2. 再来,LVS+KEEPALIVED

    记得常规组合哟. 一般同时实现HA+LB. 如果只需要实现一个,那还不如UCARP?双机绑定一个IP作热备. CENTOS6:PACEMAKER+COROSYNC+HAPROXY. OTHER:HEA ...

  3. 程序员面试宝典题目重温-P1-100

    int f(int x ,int y){    return (x&y) + ((x^y)>>1)} f(729,271)输出是什么? x&y表示按位与,结果是x,y相同位 ...

  4. HDNOIP201206施工方案

    HDNOIP201206施工方案 难度级别:A: 运行时间限制:1000ms: 运行空间限制:51200KB: 代码长度限制:2000000B 试题描述 c国边防军在边境某处的阵地是由n个地堡组成的. ...

  5. 【转】Android JNI编程—JNI基础

    原文网址:http://www.jianshu.com/p/aba734d5b5cd 最近看到了很多关于热补的开源项目——Depoxed(阿里).AnFix(阿里).DynamicAPK(携程)等,它 ...

  6. 数据结构(虚树,动态规划):HNOI 2014 世界树

    Hnoi2014 世界树 Description 世界树是一棵无比巨大的树,它伸出的枝干构成了整个世界.在这里,生存着各种各样的种族和生灵,他们共同信奉着绝对公正公平的女神艾莉森,在他们的信条里,公平 ...

  7. 数据结构(线段树):HDU 5649 DZY Loves Sorting

    DZY Loves Sorting Time Limit: 12000/6000 MS (Java/Others)    Memory Limit: 262144/262144 K (Java/Oth ...

  8. Manacher Ural 1297 Palindrome

    1297. Palindrome Time limit: 1.0 secondMemory limit: 64 MB The “U.S. Robots” HQ has just received a ...

  9. 动态规划 HDU 1176

    免费馅饼 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submis ...

  10. [Locked] Closest Binary Search Tree Value & Closest Binary Search Tree Value II

    Closest Binary Search Tree Value  Given a non-empty binary search tree and a target value, find the ...