首先,我们来了解一下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系列一 增,删,改的更多相关文章

  1. JDBC中执行sql语句的 增 , 删 , 改 , 查 的方法

    executeQuery()  : 执行 SELECT 语句,它几乎是使用最多的 SQL 语句 executeUpdate() :   执行 INSERT.UPDATE 或 DELETE 语句以及 S ...

  2. C# ADO.NET (sql语句连接方式)(增,删,改)

    using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.We ...

  3. 好用的SQL TVP~~独家赠送[增-删-改-查]的例子

    以前总是追求新东西,发现基础才是最重要的,今年主要的目标是精通SQL查询和SQL性能优化.  本系列主要是针对T-SQL的总结. [T-SQL基础]01.单表查询-几道sql查询题 [T-SQL基础] ...

  4. iOS sqlite3 的基本使用(增 删 改 查)

    iOS sqlite3 的基本使用(增 删 改 查) 这篇博客不会讲述太多sql语言,目的重在实现sqlite3的一些基本操作. 例:增 删 改 查 如果想了解更多的sql语言可以利用强大的互联网. ...

  5. ADO.NET 增 删 改 查

    ADO.NET:(数据访问技术)就是将C#和MSSQL连接起来的一个纽带 可以通过ADO.NET将内存中的临时数据写入到数据库中 也可以将数据库中的数据提取到内存中供程序调用 ADO.NET所有数据访 ...

  6. MVC EF 增 删 改 查

    using System;using System.Collections.Generic;using System.Linq;using System.Web;//using System.Data ...

  7. 第18课-数据库开发及ado.net 连接数据库.增.删.改向表中插入数据并且返回自动编号.SQLDataReade读取数据

    第18课-数据库开发及ado.net 连接数据库.增.删.改向表中插入数据并且返回自动编号.SQLDataReade读取数据 ADO.NET 为什么要学习? 我们要搭建一个平台(Web/Winform ...

  8. iOS FMDB的使用(增,删,改,查,sqlite存取图片)

    iOS FMDB的使用(增,删,改,查,sqlite存取图片) 在上一篇博客我对sqlite的基本使用进行了详细介绍... 但是在实际开发中原生使用的频率是很少的... 这篇博客我将会较全面的介绍FM ...

  9. Linq to SQL 简单的增删改操作

    Linq to SQL 简单的增删改操作. 新建数据库表tbGuestBook.结构如下: 新建web项目,完成相应的dbml文件.留言页面布局如下 <body> <form id= ...

随机推荐

  1. 打造最强Windows Server 2012 给你比Windows 8更好的体验

    每一代微软桌面操作系统推出的时候,都会同步推出相应核心的服务器操作系统,稳定性会更强哈 所以改造一下,让它保留兼容和专业的同时又有桌面操作系统的美观和便捷,多好 咳咳,让我们来看看怎么把Server ...

  2. higncharts 编辑Highcharts.com链接

    credits: {             text: 'Example.com',             href: 'http://www.example.com'          }, 只 ...

  3. Selenuim+Python之元素定位总结及实例说明

    网页自动化最基本的要求就是要定位到各个元素,然后才能对该元素进行各种操作(输入,点击,清除,提交等),所以笔者今天来总结下Selenuim+Python最基本的几种定位方式及实例说明,希望能帮助到大家 ...

  4. DEDECMS模板中dede标签使用php和if判断语句的方法

    先来看看下面这个标签{dede:field.tong_gg php=yes}if(@me==""||empty(@me))@me="<p>无</p> ...

  5. Struts2---声明式异常处理

    在service方法里 throw抛出一个异常, 然后再方法声明上加上throws: public List<Category> list() throws SQLException{ C ...

  6. 好用的消息对话框-TipsWindown

    TipsWindow的官网地址为:http://leotheme.cn/javascript/jquery-plugins-tipswindow-2-0.html 这个是一个爱好者维护的!在这里感谢这 ...

  7. Linux下Nginx、PHP、MySQL、Redis开机自启动设置

    一.Nginx开机启动设置 1.在/etc/init.d/目录下创建脚本 vi /etc/init.d/nginx 2.更改脚本权限 chmod 775 /etc/init.d/nginx 3.编写脚 ...

  8. jvm 配置,看看

    http://my.oschina.net/qiangzigege/blog/661757

  9. python模块--ip地址转换为整数

    python整数与IP地址转换 [转] 我们有时会将一个整数与IP地址进行互换,用python代码实现很简单 将一个整数如2000000,变为一个IP地址的方式 >>> import ...

  10. HTML学习(六)图像

    图像标签(<img>)和源属性(Src)在 HTML 中,图像由 <img> 标签定义.<img> 是空标签,意思是说,它只包含属性,并且没有闭合标签.要在页面上显 ...