zoukankan      html  css  js  c++  java
  • 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学生课程表,如图:

    l2s01

    注意表与表之间的外键关系。

    2,创建LINQ to classes文件

    打开VS2010,创建一个类库工程命名为LinqtoSqlDemo.DAL,在工程上右键单击,选择“add--->add item”,在文件类型中选择“LINQ to classes”,命名为L2SDB.dbml,如图所示:

    l2s02

    3,根据数据库表自动生成代码

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

    l2s03

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

    l2s04

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

    l2s05

    按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方法,所有改动才会被提交到数据库中。

  • 相关阅读:
    UVA 1025 A Spy in the Metro DP水题
    ZOJ 3814 Sawtooth Puzzle BFS
    ZOJ 3816 Generalized Palindromic Number
    UVA 10859 Placing Lampposts 树形DP
    UVA 11825 Hackers' Crackdown 状压DP
    POJ 2887 Big String 线段树 离线处理
    POJ 1635 Subway tree systems Hash法判断有根树是否同构
    BZOJ 3110 k大数查询 & 树套树
    sdoi 2009 & 状态压缩
    来自于2016.2.24的flag
  • 原文地址:https://www.cnblogs.com/wlming/p/5993754.html
Copyright © 2011-2022 走看看