首页 行业资讯 宠物日常 宠物养护 宠物健康 宠物故事
您的当前位置:首页正文

学习Linq To Sql

2023-11-10 来源:画鸵萌宠网

他可以让你把精力都放在业务逻辑上面,而用同一个语句操作多种关系型数据库

下面就让我们来看看他的用法..........

数据库字段

use mastergocreate database Learn_Linq_to_Sqlgouse Learn_Linq_to_Sqlgocreate table Class( CId int primary key identity(1,1), CName nvarchar(20) not null)gocreate table Student( Id int primary key identity(1,1), Name nvarchar(10) not null, ShuXue int , Yuwen int, CId int foreign key references Class(CId))goinsert into Class values(‘122‘),(‘123‘),(‘124‘),(‘125‘)goinsert into Student values(‘小白‘,67,78,1),(‘小菜‘,34,15,2),(‘小芳‘,32,87,4),(‘小李‘,36,59,3),(‘小张‘,56,69,3),(‘小天‘,45,63,3),(‘小杨‘,78,87,2),(‘小青‘,77,81,1),(‘小黄‘,76,74,4),(‘小吴‘,98,53,1)

有了数据库以后我们就需要在项目中创建一个Linq to Sql

技术分享

 

生成的实体导航属性如下:

 

技术分享

可以看到编译器自动帮我们生产了类

技术分享

然后我们就可以尝试者来使用了

技术分享

 实现查询....

技术分享

 

 除此之外还可以使用CLR的一些功能

技术分享

 

 #region Linq 连接 //var clas = dc.GetTable<Class>(); //var student = dc.GetTable<Student>(); //var result = from cl in clas // join s in student on cl.CId equals s.CId into temp // from t in temp.DefaultIfEmpty() // select new {CName=cl.CName,Name=t.Name }; //foreach (var item in result) //{ // Console.WriteLine("班级:"+item.CName); // Console.WriteLine(item.Name); //} #endregion #region 关系 //var result = dc1.GetTable<Class>(); //foreach (Class cl in result) //{ // Console.WriteLine("班级:" + cl.CName); // foreach (Student item in cl.Student) // { // Console.WriteLine("" + item.Name); // } //} #endregion #region 设置加载参数 //DataLoadOptions ds = new DataLoadOptions(); //ds.LoadWith<Class>(d =>d.Student);//指定加载 //dc1.LoadOptions = ds; //var result = dc1.GetTable<Class>(); //foreach (Class cl in result) //{ // Console.WriteLine("班级:" + cl.CName); // foreach (Student item in cl.Student) // { // Console.WriteLine("" + item.Name); // } //} #endregion #region 修改 //var result = dc1.GetTable<Student>(); //foreach (var item in result) //{ // item.Yuwen -= 5; //} //dc1.SubmitChanges(); #endregion #region 删除和添加 //var students = dc1.GetTable<Student>(); ////Student s = new Student(); ////s.Yuwen = 88; ////s.ShuXue = 79; ////s.Name = "我是sb"; ////s.CId = 2; ////students.InsertOnSubmit(s); ////dc1.SubmitChanges(); //students.DeleteOnSubmit(students.Where(d => d.Name == "我是sb").FirstOrDefault()); //dc1.SubmitChanges(); #endregion

 

学习Linq To Sql

标签:tor   from   weight   连接   nvarchar   关系型数据库   使用   value   options   

小编还为您整理了以下内容,可能对您也有帮助:

linq to sql前景怎样,我是一个计算机专业的学生,最近刚接触linq to sql,知之甚少,特来请教各位

LINQ TO SQL 是包含在.NET Framework 3.5 版中的一种 O/RM 组件(对象关系映射),O/RM 允许你使用 .NET 的类来对关系数据库进行建模。然后,你可以使用LINQ对数据库中的数据进行查询、更新、添加、删除。

LINQ TO SQL 提供了对事务、视图、存储过程的完全支持。它同样为集成数据校验和业务层逻辑到你的数据模型中提供了一种简单的实现方式。

LINQ TO SQL 有什么优缺点啊?

首先,在了解 LINQ To SQL 有什么优点之前,我们有必要首先了解下,微软为什么弄了这么个东西。 搞出这个东西来有什么目的:——当然是为了 满足不知道怎么操作数据的程序员开发设计的,并不是每个程序员 都会直接操作数据库,LinQ 可以让他们以一种面向数据对象的方式来思考,及持久化他们的数据!

好处: 容易学习,书写简单。 在开发 中小型 项目 的时候推荐使用!因为可以节省时间!
它可以很方便的调用 存储过程、SQL函数

缺点:由于直接封装了所有的数据持久操作。导致批量持久数据会产生效率问题
尤其体现在批量跟新数据,它会在内存中保持大量的数据模型。

总结:中小型 项目 就放心用吧! 不过从技术 储备的角度来说,建议 看看entity framework

LINQ TO SQL 有什么优缺点啊?

首先,在了解 LINQ To SQL 有什么优点之前,我们有必要首先了解下,微软为什么弄了这么个东西。 搞出这个东西来有什么目的:——当然是为了 满足不知道怎么操作数据的程序员开发设计的,并不是每个程序员 都会直接操作数据库,LinQ 可以让他们以一种面向数据对象的方式来思考,及持久化他们的数据!

好处: 容易学习,书写简单。 在开发 中小型 项目 的时候推荐使用!因为可以节省时间!
它可以很方便的调用 存储过程、SQL函数

缺点:由于直接封装了所有的数据持久操作。导致批量持久数据会产生效率问题
尤其体现在批量跟新数据,它会在内存中保持大量的数据模型。

总结:中小型 项目 就放心用吧! 不过从技术 储备的角度来说,建议 看看entity framework

linq to sql语句和sql语句一样吗

并不一样,SQL 语句是遵照T-SQL语法的,linq to sql 是使用Linq的,虽然看上去很类似,但关键字,查询方式都完全不一样,建议你按照MSDN上的教程分别学习。

linq to sql语句和sql语句一样吗

并不一样,SQL 语句是遵照T-SQL语法的,linq to sql 是使用Linq的,虽然看上去很类似,但关键字,查询方式都完全不一样,建议你按照MSDN上的教程分别学习。

为什么要学习使用LINQ技术

首先要知道Linq 都有哪些知识点,这个可以自行百度;

对集合的查询,筛选,排序,重新生成新的对象

多个集合的连接查询

Linq to SQL ,可以进行SQL查询等操作, 可以忽略不同数据库之间的差异;

你要知道很多人不懂得sql语句的,更别说不同数据库的sql语句;

推荐你看一下 ,自己搜索下面的条件

Linq使用心得——SelectMany替代二重foreach循环

可以看得出比你自己写循环要方便很多;

5.推荐你把LINQ的几十个操作符都看一下,知道是什么功能,可以先会用,知道它能干什么,这个时候再具体讨论它的意义,它该不该学习

6.下面是2个网址,有时间可以自行看一下它是什么,然后再深究其学习的意义

http://www.cnblogs.com/foundation/archive/2009/01/05/1369371.html

http://www.cnblogs.com/lyj/archive/2008/03/24/1119671.html

为什么要学习使用LINQ技术

首先要知道Linq 都有哪些知识点,这个可以自行百度;

对集合的查询,筛选,排序,重新生成新的对象

多个集合的连接查询

Linq to SQL ,可以进行SQL查询等操作, 可以忽略不同数据库之间的差异;

你要知道很多人不懂得sql语句的,更别说不同数据库的sql语句;

推荐你看一下 ,自己搜索下面的条件

Linq使用心得——SelectMany替代二重foreach循环

可以看得出比你自己写循环要方便很多;

5.推荐你把LINQ的几十个操作符都看一下,知道是什么功能,可以先会用,知道它能干什么,这个时候再具体讨论它的意义,它该不该学习

6.下面是2个网址,有时间可以自行看一下它是什么,然后再深究其学习的意义

http://www.cnblogs.com/foundation/archive/2009/01/05/1369371.html

http://www.cnblogs.com/lyj/archive/2008/03/24/1119671.html

LINQ TO SQL 和 ADO.NET ENTITY 有什么区别呢?

LINQ to SQL和Entity Framework都是一种包含LINQ功能的对象关系映射技术。他们之间的本质区别在于EF对数据库架构和查询的类型实行了更好的解耦。使用EF,查询的对象不再是完全对应数据库架构的C#类,而是更高层的抽象:Entity Data Model。这提供了额外的灵活性,但是在性能和简单性上面也会有所损失。具体二者之间的区别如下:

复杂度:支持越多的特性就会越复杂。LINQ to SQL所支持的特性比较少,所以也就相对不太复杂;而EntityFramework支持的特性比较多,所以相对比较复杂。

模型:LINQ to SQL在数据表与类之间提供了一对一的映射。如果你有Customers,Orders, 和Lineitems表,你就会有Customer,Order, 和Lineitem类来匹配每一个表。EntityFramework可以使你有一个Customer类,而这个类可以匹配多个表。这就意味着公司名可以 在一个表中,但是地址是在另一个表中,而电话号码又在另一个表中,等等。

数据库服务器:LINQ to SQL只支持Microsoft SQL Server 2000及之后的版本,但即使是SQLServer2000也有很多。EntityFramework可以支持IBMDB2, Sybase SqlAnywhere, Oracle, SQLAzure,还有其他很多。

开发时间:LINQ to SQL很容易学,开发起来也很快,但是LINQ to SQL有一些,在开发较复杂的应用时可能会产生问题。EntityFramework的能力更强,虽然学习及应用起来比较慢,但是对更多的特性的支持使得在开发较复杂的应用时可以使问题最小化。

继承:LINQ to SQL支持TPH,而EntityFramework支持TPH和TPT,并且对TPC也部分支持。

文件类型:LINQ to SQL使用包含XML的数据库标记语言(DBML)文件来映射entity与数据表。EntityFramework 使用四个文件。第一个是Entity Data Model (EDMX),这个是在设计器中使用的。在编译时EDMX文件产生了其他三个文件。另外三个文件中,第一个是ConceptualSchema Definition Language(CSDL)文件,其包含概念模型的XML定义。第二个是SchemaDefinition Language(SSDL)文件,其包含存储模型的定义。第三个文件是Mapping Specification Language(MSL)文件,其包含概念模型与存储模型之间的映射。

复杂类型支持:比如说,一个客户有电话号码,但你想要电话号码定义为国家区号,地区号,城市区号,号码和分机号。LINQto SQL不支持这种复杂类型,而EntityFramework支持。

查询能力:LINQ to SQL通过DataContext对数据库进行查询。EntityFramework通过ObjectContext通过LINQto Entities进行查询。Entity Framework还提供了ESQL,它是一种类似SQL的查询语言,很适合在模型定义中定义查询。EntityFramework还包含了 ObjectQuery类,用于对象服务在运行时动态创建查询。最后EntityFramework还包含EntityClientProvider,它 用于对概念模型进行查询。

性能:LINQ to SQL和Entity Framework第一次执行查询的时候都比较慢,但之后性能都让人比较满意。EntityFramework性能要稍微优于LINQto SQL。

完善:微软在发布了Entity Framework之后就停止了发布新的LINQ to SQL,但由于LINQto SQL的简单性,它还是很受欢迎的,所以微软仍将继续对LINQto SQL的用户进行支持与反馈,但是LINQto SQL将不再发布新版本进行完善。

由模型生成数据库:LINQ to SQL没有能力由模型生成数据库。Entity Framework支持两种类型的开发模式,数据库优先和编码优先。数据库优先开发,数据库已经存在,所以不需要由模型生成数据库。编码优先,你要先创建你的模型,然后由模型生成数据库。

关于LINQ TO SQL 的更新问题

这样做是不行的。j=c的时候相当于使用了一个新的对象来替换了被上下文管理的j,也就是说,上下文不知道j已经被更新了。

一般的做法是,使用c的值逐个更新j的属性,然后再提交。

显示全文