linq to sql 的基础类是: DataContext; 当建立完数据库连接时,他会自动生成一段脚本代码。这段脚本代码实现的是与数据库的连接。
代码生成为
连接完成后就可以往dbml页面拖拽你的所需要的表了,我以northwind数据库为例,我拖拽一张Customers表,vs平台会自动映射到你的sql数据库当中。映射代码为:
当我们在sql数据库当中想查看这张表的信息,我们可以写一行sql语句“select * from Customers”,现在linq to sql 也可以在页面上直接访问Customers表中的信息内容。我们可以在cs代码里面这样写代码:
使用 linq to sql 之前:
1.我们定义一个类,这个类名称是datacontext,他有很多overloading .这里用到了一个连接字符串的一个load,与数据库进行进行交互的连接。
2.连接完数据库,我会找到我要去寻找我要查的info,也就是我要select 哪张表。这里我们从数据库当中寻找到了customers这张表,主要用到system.data.linq.table<customer> 定义表,在上面用ctx.getable<customer>()找到所映射的数据库表。
3.就是linqde查询语句了,first()方法返回customer表的第一条数据,还有值得注意的是tolist<Customer>()就是把结果集转换成表的类型集合。
接下来讨论下lamda表达式(=>)
他是一个委托,比如说我们定义一个委托 :delegate int del(int i); 然后我们就可以直接对这个定义的委托赋值del myDelegate = x => x * x; 这样我们把lamda表达式赋给了定义的委托之后,我们调用这个mydelegate(5),他将返回25这个值。
为了便于理解我再写一个例子:
这个例子返回的是在numbers这个数组中%2等于1的数字个数。lamda表达式为n=>n%2==1.
下面给出了一个检索customers表中city名称存在数组当中的数据。
接下来说说怎么应用linq to sql 访问存储过程:
然后写一段有参数的存储过程上的代码: