LINQ to Sql系列一 增,删,改
首先,我们来了解一下LINQ to sql 是什么,我想从以下几点来做说明。
1,LINQ是从.net framework 3.0开始引入的的语言特性,主要是用来对集合数据进行操作的。
2,LINQ to sql是LINQ在数据库数据访问方面的一个ORM框架。
了解完概念之后,我们就开始地学习LINQ to sql了,不过在正式利用LINQ to sql去进行数据的增,删,改,查之前,我们还有一些准备工作要做。
准备工作
1,创建数据库
创建数据库名为LinqtoSqlDemoDb,一共有四张表分别是Student学生表,Class班级表,Course课程表和StudentCourse学生课程表,如图:

注意表与表之间的外键关系。
2,创建LINQ to classes文件
打开VS2010,创建一个类库工程命名为LinqtoSqlDemo.DAL,在工程上右键单击,选择“add--->add item”,在文件类型中选择“LINQ to classes”,命名为L2SDB.dbml,如图所示:

3,根据数据库表自动生成代码
创建好LINQ to classes文件后,选择菜单“view--->server explorer”打开server explorer窗口,增加一个数据库连接。如图一

展开tables开点,应该就能看到刚才创建的四张表,将它们选中然后拖到设计区,就会得到如图所示的样子。

在设计窗口按F4键打开DataContext的属性窗口,我们需要给数据库上下文设定命名空间,如图。

按ctrl+f5保存,这样我们的LINQ to sql 的ORM就创建好了。下面我们就可以开始数据的增,删,改的操作了。
代码如下:

public static void Add()
{
ClassInfo ci = new ClassInfo { ClassName="class 1"}; Console.WriteLine("---------------begin add a class");
using (L2SDBDataContext db = new L2SDBDataContext())
{
TClass tc = new TClass();
ClassValueCopier.Copy(tc, ci);
//db.Log = Console.Out; //for output sql statement
db.TClasses.InsertOnSubmit(tc);
db.SubmitChanges();
}
Console.WriteLine("--------------end");
}

代码如下:

public static void Delete(int id = 3)
{
Console.WriteLine("---------------begin delete a class");
using (L2SDBDataContext db = new L2SDBDataContext())
{
//get the class by id
TClass tc = db.TClasses.SingleOrDefault(p => p.ClassID == id);
db.TClasses.DeleteOnSubmit(tc);
db.SubmitChanges();
}
Console.WriteLine("--------------end delete a student");
}

代码如下:

public static void Edit(int id = 3)
{
Console.WriteLine("---------------begin edit a class");
using (L2SDBDataContext db = new L2SDBDataContext())
{
//get the class by id
TClass tc = db.TClasses.SingleOrDefault(p => p.ClassID == id);
tc.ClassName = "class 1a";
db.SubmitChanges();
}
Console.WriteLine("---------------end edit a class");
}

总结:
1,首先我们必须得到DataContext对象,这个对象相当于一个数据库的GateWay,所有的操作都是通过它进行的。
2,LINQ to sql使用了“Unit of work”模式,所以,对数据库的操作不会立即提交到数据库,而是需要显式调用DataContext对象的SubmitChanges方法,所有改动才会被提交到数据库中。
LINQ to Sql系列一 增,删,改的更多相关文章
- JDBC中执行sql语句的 增 , 删 , 改 , 查 的方法
executeQuery() : 执行 SELECT 语句,它几乎是使用最多的 SQL 语句 executeUpdate() : 执行 INSERT.UPDATE 或 DELETE 语句以及 S ...
- C# ADO.NET (sql语句连接方式)(增,删,改)
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.We ...
- 好用的SQL TVP~~独家赠送[增-删-改-查]的例子
以前总是追求新东西,发现基础才是最重要的,今年主要的目标是精通SQL查询和SQL性能优化. 本系列主要是针对T-SQL的总结. [T-SQL基础]01.单表查询-几道sql查询题 [T-SQL基础] ...
- iOS sqlite3 的基本使用(增 删 改 查)
iOS sqlite3 的基本使用(增 删 改 查) 这篇博客不会讲述太多sql语言,目的重在实现sqlite3的一些基本操作. 例:增 删 改 查 如果想了解更多的sql语言可以利用强大的互联网. ...
- ADO.NET 增 删 改 查
ADO.NET:(数据访问技术)就是将C#和MSSQL连接起来的一个纽带 可以通过ADO.NET将内存中的临时数据写入到数据库中 也可以将数据库中的数据提取到内存中供程序调用 ADO.NET所有数据访 ...
- MVC EF 增 删 改 查
using System;using System.Collections.Generic;using System.Linq;using System.Web;//using System.Data ...
- 第18课-数据库开发及ado.net 连接数据库.增.删.改向表中插入数据并且返回自动编号.SQLDataReade读取数据
第18课-数据库开发及ado.net 连接数据库.增.删.改向表中插入数据并且返回自动编号.SQLDataReade读取数据 ADO.NET 为什么要学习? 我们要搭建一个平台(Web/Winform ...
- iOS FMDB的使用(增,删,改,查,sqlite存取图片)
iOS FMDB的使用(增,删,改,查,sqlite存取图片) 在上一篇博客我对sqlite的基本使用进行了详细介绍... 但是在实际开发中原生使用的频率是很少的... 这篇博客我将会较全面的介绍FM ...
- Linq to SQL 简单的增删改操作
Linq to SQL 简单的增删改操作. 新建数据库表tbGuestBook.结构如下: 新建web项目,完成相应的dbml文件.留言页面布局如下 <body> <form id= ...
随机推荐
- 在Servlet(或者Filter,或者Listener)中使用spring的IOC容器
web.xml中的加载顺序为:listener > filter > servlet > spring. 其中filter的执行顺序是filter-mapping在web.xml中出 ...
- JAVA基础--常用类 String,StringBuffer, 基础数据类型包装类, Math类, Enum类
字符串相关类: String, StringBuffer String类为不可变的字符序列 String s1="hello"; String s2="hello&quo ...
- MC34063中文资料及应用实例(转)
源:http://blog.chinaunix.net/uid-26199686-id-3207838.html MC34063A(MC33063)芯片器件简介 该器件本身包含了DC/DC变换器所需要 ...
- 如何使用UDP进行跨网段广播(转)
源:http://blog.chinaunix.net/uid-22670933-id-3716646.html 广播域首先我们来了解一下广播域的概念.广播域是网络中能接收任一台主机发出的广播帧的所有 ...
- vmware中的bridge、nat、host-only的区别
概述: VMWare提供了三种工作模式,它们是bridged(桥接模式).NAT(网络地址转换模式)和host-only(主机模式).要想在网络管理和维护中合理应用它们,你就应该先了解一下这三种工作模 ...
- EasyUi中的datagird中a标签的click事件无法触发?(已解决)
***************************2015-10-29 21:07************************* 问题如下: datagrid最后一列编辑中有如下a标签 { f ...
- 手机web——自适应网页设计(html/css控制) - 51CTO.COM
body { font-family: "Microsoft YaHei UI","Microsoft YaHei",SimSun,"Segoe UI ...
- Linux中后台执行任务
执行时, 可以在命令最后添加 & 使其后台执行, 但是其输出依然会显示, 而且其运行是和当前shell绑定的 如果脚本已经运行, 可以使用Ctrl-Z暂停, 然后使用 bg 让其转入后台, ...
- (简单) POJ 1797 Heavy Transportation,Dijkstra。
Description Background Hugo Heavy is happy. After the breakdown of the Cargolifter project he can no ...
- linux动态链接库---一篇讲尽
一般我们在Linux下执行某些外部程序的时候可能会提示找不到共享库的错误, 比如: tmux: error while loading shared libraries: libevent-1.4.s ...