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

http://www.cnblogs.com/yukaizhao/archive/2010/05/13/linq_to_sql_1.html

LINQ和 LINQ to SQL 都已经不是一个新事物了,但是我接触的比较晚,本着绝知此事要躬行的态度,决定写这个系列。

 

本文使用的测试环境是VS 2010,和sql server 2005数据库。

 

1.  从CUD开始,如何使用LINQ  to SQL插入、修改、删除数据

2.  查询 使用LINQ to SQL做简单查询

3.  查询 延迟加载与立即加载,使用LoadWith和AssociateWith

4.  查询 inner join,left outer join

5.  Linq to SQL中的聚合grouping having

6.  LINQ to SQL查询优化,需要忧虑性能吗?

 

第一篇       从CUD开始,如何使用LINQ  to SQL插入、修改、删除数据 

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

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

 

2. 可以通过点击dbml文件空白处,按F4显示dbml属性,可以修改Context和生成实体的命名空间

 

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

1) 添加 Add

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
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语句 

?
1
2
3
4
5
6
7
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 编辑操作

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
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语句

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
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 执行删除操作

执行代码:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
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语句:

?
1
2
3
4
5
6
7
8
9
10
11
12
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执行增改删操作,非常方便,我们甚至不需要学习任何sql相关的知识。

转载于:https://www.cnblogs.com/xihong2014/p/4249491.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值