标签:数据库 linq to sql
LINQ,语言集成查询(LanguageIntegrated Query)是一组用于c#和Visual Basic语言的扩展。它允许编写C#或者Visual Basic代码以查询数据库相同的方式操作内存数据。
从技术角度而言,LINQ定义了大约40个查询操作符,如select、from、in、where以及order by(C#中)。使用这些操作符可以编写查询语句。不过,这些查询还可以基于很多类型的数据,每个数据类型都需要一个单独的LINQ类型。
开始学习LinQ总是抱着一种感觉自己很虚的心情,做项目了,结果还要临时学习新的内容:PD、EF、LINQ、MongDB。难道是之前学的东西都没有用呢?就抱着这样的疑问,问师傅们。加上今天米老师的讲课。才明白了什么是即学式。平时学习是在培养一种能力,等到了真正做项目的时候,让你学什么都可以从容的去接受说:恩,对我来说很简单,五天学习四样东西也是可以接受的。
就以LINQ为例来说,对于入门者来说,马上就要上手项目,那么学习的目的性十分的明确。既然可以用来代替SQL语句,显然先去了解它的增删改查是首先要做的。从技术角度而言,LINQ定义了大约40个查询操作符,如select、from、in、where以及order by(C#中)。使用这些操作符可以编写查询语句。不过,这些查询还可以基于很多类型的数据,每个数据类型都需要一个单独的LINQ类型。其实看看这些高大上的查询操作符,和我们当初写的SQL语句是一样的。只不过是顺序有变化而已。
<span style="font-size:18px;">using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.Data.Common; namespace FirstLinq { public partial class _Default : Page { NorthwindDataContext ctx = new NorthwindDataContext("Data Source=.;Initial Catalog=linq;Persist Security Info=True;User ID=sa;Password=123456"); protected void Page_Load(object sender, EventArgs e) { //Linq1(); //Linq2(); Linq3(); } /// <summary> /// 增删改查 /// </summary> private void Linq3() { //增 t_User user = new t_User(); user.ID = 1; user.UserName = "周洲"; user.Pwd = "11111"; ctx.t_User.InsertOnSubmit(user); ctx.SubmitChanges(); //改 t_User userUpdate = ctx.t_User.SingleOrDefault(t_User => t_User.ID == 0); userUpdate.UserName = "周洲改名字"; ctx.SubmitChanges(); //删 t_User userDelete = (from userinfo in ctx.t_User where userinfo.ID == 1 select userinfo).FirstOrDefault(); if (userDelete != null) { ctx.t_User.DeleteOnSubmit(userDelete); ctx.SubmitChanges(); } }</span>
/// <summary> /// 熟悉Linq to sql语法 /// </summary> private void Linq2() { Customers customer = new Customers(); //执行普通的sql语句,查询CustomerID="ANATR"的记录 IEnumerable<Customers> customers = ctx.ExecuteQuery<Customers>("select * from Customers where CustomerID='ANATR'"); customer = customers.First(); Response.Write(customer.CustomerID); //使用Linq查询单条记录 var cus = from c in ctx.Customers where c.CustomerID.Equals("ANATR") select c; customer = cus.First(); Response.Write(customer.CompanyName); //查询结果集,语法:from 临时表名 in 表集合 orderby 临时表名.字段名 升级序 select 临时表名 gdvCustomers.DataSource = from cust in ctx.Customers where cust.CustomerID != "ANATR" orderby cust.CompanyName descending select cust; gdvCustomers.DataBind(); }
LINQ的原理其实挺简单,LINQ像是把面向对象和关系型数据模型结合了起来。这样的一种技术就把数据真正映射成一个对象,方便去操作和管理。你再也不必去根据不同的情况用字符串拼接的办法生成SQL语句,而是专心于对象模型的处理即可,这些方法层面的操作都会被转换成对应的增删改查语句,在submit的时候全部转到数据库中。总而言之,linq to sql是一个数据库到对象结构的一个中间层,
他把对关系数据的管理转变为对象的操作,屏蔽了麻烦的sql,而且,还可以得到vs强大的智能感知功能的帮助。
标签:数据库 linq to sql
原文地址:http://blog.csdn.net/zhou2s_101216/article/details/44142631