wap建站php源码,在邯郸开互联网公司,张家港个人网站制作,网站建设的重要性意义LINQ和 LINQ to SQL 都已经不是一个新事物了#xff0c;但是我接触的比较晚#xff0c;本着绝知此事要躬行的态度#xff0c;决定写这个系列。本文使用的测试环境是VS 2010#xff0c;和sql server 2005数据库。第一篇 从CUD开始#xff0c;如何使用LINQ to SQL插入…LINQ和 LINQ to SQL 都已经不是一个新事物了但是我接触的比较晚本着绝知此事要躬行的态度决定写这个系列。本文使用的测试环境是VS 2010和sql server 2005数据库。第一篇 从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) 添加 Addstatic void Add(){//添加一个StudentStudent 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.12) 使用linq to sql执行Edit 编辑操作private static void Edit(int id){Console.WriteLine(----------begin edit);using (DbAppDataContext db new DbAppDataContext()){db.Log Console.Out;//取出studentvar editStudent db.Students.SingleOrDefault(ss.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.1UPDATE [dbo].[Student]SET [Name] p3, [Hometown] p4WHERE ([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.13)使用linq to sql 执行删除操作执行代码static void Delete(int id){Console.WriteLine(-----------begin delete a student);using (DbAppDataContext db new DbAppDataContext()){db.Log Console.Out;//取出studentvar student db.Students.SingleOrDefault(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.1DELETE 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相关的知识。我有两点疑惑请各位指点1 是否是在执行update和delete时必须先获得实体然后才能执行操作我尝试在update时不去数据库中获取实体而是自己声明一个实体然后去删除但是失败了2 在生成的update和delete的条件语句中包含namep和hometownp的语句按理说link to sql已经知道id是唯一的主键为什么还会传这些没有的条件进去的