如何使用LINQ to SQL插入、修改、删除数据

原创 2015年11月19日 16:15:02


准备工作,现在数据库中建好测试表Student,这个表只有三个字段ID,Name,Hometown,其中ID为int类型的自增长字段,Name和Howmtown是nvarchar类型

1. 打开VS2010新建控制台应用程序,然后添加LINQ to SQL Class,命名为DbApp.dbml,新建dbml文件之后,可以打开server explorer,建立数据库连接,并将我们新建的表拖到dbml文件中,结果如下图

2. 到现在为止VS2010通过工具为我们创建好了数据表对应实体类和数据表操作添,改,删的方法,现在开始实践

1) 添加 Add

static void Add()

{

    //添加一个Student

    Student aStudent = new Student

    {

        Name = "张小二",

        Hometown = "南海观音院"

    };

    Console.WriteLine("----------begin Add a student");

    using (DbAppDataContext db = new DbAppDataContext())

    {

        db.Log = Console.Out;

        db.Students.InsertOnSubmit(aStudent);

        db.SubmitChanges();

    }

 

    Console.WriteLine("----------End Add a student");

}

输出的sql语句 :

INSERT INTO [dbo].[Student]([Name], [Hometown])

VALUES (@p0, @p1)

 

SELECT CONVERT(Int,SCOPE_IDENTITY()) AS [value]

-- @p0: Input NVarChar (Size = 4000; Prec = 0; Scale = 0) [张小二]

-- @p1: Input NVarChar (Size = 4000; Prec = 0; Scale = 0) [南海观音院]

-- Context: SqlProvider(Sql2005) Model: AttributedMetaModel Build: 4.0.30319.1

2) 使用linq to sql执行Edit 编辑操作

private static void Edit(int id)

{

    Console.WriteLine("----------begin edit");

    using (DbAppDataContext db = new DbAppDataContext())

    {

        db.Log = Console.Out;

 

    //取出student

    var editStudent = db.Students.SingleOrDefault<Student>(s=>s.ID == id);

 

    if (editStudent == null)

    {

        Console.WriteLine("id错误");

        return;

    }

 

    //修改student的属性

    editStudent.Name = "张小三";

    editStudent.Hometown = "张家口张家寨张家营";

 

    //执行更新操作

    db.SubmitChanges();

 

    }

    Console.WriteLine("---------end edit Student");

}

输出的sql语句:

SELECT [t0].[ID], [t0].[Name], [t0].[Hometown]

FROM [dbo].[Student] AS [t0]

WHERE [t0].[ID] = @p0

-- @p0: Input Int (Size = -1; Prec = 0; Scale = 0) [6]

-- Context: SqlProvider(Sql2005) Model: AttributedMetaModel Build: 4.0.30319.1

 

UPDATE [dbo].[Student]

SET [Name] = @p3, [Hometown] = @p4

WHERE ([ID] = @p0) AND ([Name] = @p1) AND ([Hometown] = @p2)

-- @p0: Input Int (Size = -1; Prec = 0; Scale = 0) [6]

-- @p1: Input NVarChar (Size = 4000; Prec = 0; Scale = 0) [张小二]

-- @p2: Input NVarChar (Size = 4000; Prec = 0; Scale = 0) [南海观音院]

-- @p3: Input NVarChar (Size = 4000; Prec = 0; Scale = 0) [张小三]

-- @p4: Input NVarChar (Size = 4000; Prec = 0; Scale = 0) [张家口张家寨张家营]

-- Context: SqlProvider(Sql2005) Model: AttributedMetaModel Build: 4.0.30319.1

3)使用linq to sql 执行删除操作

执行代码:

static void Delete(int id)

{

    Console.WriteLine("-----------begin delete a student");

    using (DbAppDataContext db = new DbAppDataContext())

    {

        db.Log = Console.Out;

        //取出student

        var student = db.Students.SingleOrDefault<Student>(s => s.ID == id);

 

        if (student == null)

        {

            Console.WriteLine("student is null");

            return;

        }

 

        db.Students.DeleteOnSubmit(student);

 

        db.SubmitChanges();

    }

    Console.WriteLine("------------end Delete student");

}

生成的sql语句:

SELECT [t0].[ID], [t0].[Name], [t0].[Hometown]

FROM [dbo].[Student] AS [t0]

WHERE [t0].[ID] = @p0

-- @p0: Input Int (Size = -1; Prec = 0; Scale = 0) [6]

-- Context: SqlProvider(Sql2005) Model: AttributedMetaModel Build: 4.0.30319.1

 

DELETE FROM [dbo].[Student] WHERE ([ID] = @p0) AND ([Name] = @p1) AND ([Hometown

] = @p2)

-- @p0: Input Int (Size = -1; Prec = 0; Scale = 0) [6]

-- @p1: Input NVarChar (Size = 4000; Prec = 0; Scale = 0) [张小三]

-- @p2: Input NVarChar (Size = 4000; Prec = 0; Scale = 0) [张家口张家寨张家营]

-- Context: SqlProvider(Sql2005) Model: AttributedMetaModel Build: 4.0.30319.1






LINQ to SQL 系列 如何使用LINQ to SQL插入、修改、删除数据

LINQ和 LINQ to SQL 都已经不是一个新事物了,但是我接触的比较晚,本着绝知此事要躬行的态度,决定写这个系列。   本文使用的测试环境是VS 2010,和sql server ...
  • CsethCRM
  • CsethCRM
  • 2014年03月11日 11:46
  • 8412

linq To SQl之关联表同步添加数据

//关联表同步添加数据 ,如订单和订单详细;用户和用户组别  protected void gvUser_RowInserting(object sender, DevExpress.Web.Data...
  • longer123123
  • longer123123
  • 2009年03月03日 22:33
  • 2910

LINQ to SQL 系列 如何使用LINQ to SQL插入、修改、删除数据[转]

LINQ和 LINQ to SQL 都已经不是一个新事物了,但是我接触的比较晚,本着绝知此事要躬行的态度,决定写这个系列。   本文使用的测试环境是VS 2010,和sql server ...
  • Seal203
  • Seal203
  • 2015年11月21日 15:42
  • 369

Dataset用法实践之三 dataset与LINQ使用

Dataset用法实践之三 dataset与LINQ使用csharpsamples中有各种例子,是最好的教材。http://www.yesky.com/96/1924596_2.shtml  ADO....
  • zhongchengli
  • zhongchengli
  • 2010年07月05日 14:55
  • 4161

Linq学习——更新数据库操作

用LINQ to SQL建模Northwind数据库 在这之前一起学过LINQ to SQL设计器的使用,下面就使用如下的数据模型: 当使用LINQ to SQL设计器设计以上定义的五个...
  • huangshunle
  • huangshunle
  • 2013年01月07日 14:07
  • 6592

Linq to SQL 增删改查

using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.We...
  • li185416672
  • li185416672
  • 2014年11月23日 15:40
  • 1755

SQL Server数据库-----基本T-SQL(查询,插入,删除,修改)

一。查询语句(SELECT) SELECT语句的基本语法:        SELECT [ALL|DISTINCT] [AS 列名][, [AS 列名] ...]          FROM ...
  • luozenghui529480823
  • luozenghui529480823
  • 2012年09月05日 20:02
  • 4696

linq to xml 简单的增、删、改、查、保存xml文件操作

转自:http://www.cnblogs.com/zoro-zero/p/3983205.html using System; using System.Collections; us...
  • HorseRunningNoStop
  • HorseRunningNoStop
  • 2017年04月02日 10:23
  • 807

linq to sql 插入值后,如何取回自增的ID

linq to sql 在插入值的时候还是很方便。有时候我们需要在插入一个新实体之后得到那个实体的主键ID的值,这个ID当然必须是自增。通过观察linq to sql插入之后产生的sql发现,它自动生...
  • qwlovedzm
  • qwlovedzm
  • 2011年08月17日 15:49
  • 6449

关于List集合使用 Linq 操作问题

最近在做一个统计的功能,根据数据表数据筛选到缓存后,依据模型进行计算处理,最终显示百分比结果。 可是,代码编写完成后,页面显示的结果始终无法和数据库操作一致: 页面显示内容 明明是 11 ...
  • Robin022
  • Robin022
  • 2015年08月31日 17:03
  • 971
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:如何使用LINQ to SQL插入、修改、删除数据
举报原因:
原因补充:

(最多只允许输入30个字)