概述
LINQ不仅仅能操作SQL Server数据库,还可以操作数组,集合,DataSet,XML等等
本篇介绍LINQ操作SQL Server数据库
首先,我先介绍LINQ的增删改查的重要步骤:
第一步:建立数据连接,在我的另一篇博文"<<VS添加数据连接>>"中已经介绍
第二步:在解决方案中的项目上,右键建立LINQ to SQL类
第三步:LINQ相关操作
1.建立LINQ连接对象,根据建立的LINQ to SQL类的上下文建立linq
声明数据库连接字符串;然后实例化连接对象
2.书写相应的LINQ语句 var result=..........;
3.用相应的方法操作语句的执行结果 result
4.linq.SubmitChanges(); /在增删改时要提交操作
注意:result 因为result是一个var型变量,它能根据语句的执行结果的类型确定类型,所以result有时可以是DataGridView的数据源,有是只是一个对象,有时又是一个集合等等,总是要从对象的角度看待它。
下面是运用LINQ查询和增删改的详细实践介绍:
一:LINQ查询:
根据查询条件和关键字查询数据库到datagridview表
界面设计如下:
在右面解决方案,点击右键,添加新项,添加LINQ to SQL类,取名为linqtosqlClass.dbml
把数据库的表拉到linqtosqlClass.dbml中,结果视图如下:
下面是linqtosqlClass的cs设计代码,这是系统自动生成的。
里面主要定义了一个linqtosqlClassDataContext类跟定义读取写入name跟id的属性
下面是程序的代码:
定义链接数据库的字符串,加载窗体就去取所有数据,点击查询按钮就根据查询条件取数据。其中学号是准确查询,名字是模糊查询。
运行测试结果如下:
查询学号结果如下:
查询名字结果如下:
二:使用LINQ管理SQL Server数据库
添加数据,修改数据,删除数据
其实只是调用的方法不同而已:
1.对于添加数据来说:使用LINQ向SQL Server数据库中添加数据时,使用的是InsertOnSubmit方法和SubmitChanges方法
。其中InsertOnSubmit方法是用来将处于pending insert状态的实体添加到SQL数据表中,语法格式为:
void InsertOnSubmit(Object entity) entity代表要添加的实体
SubmitChanges方法用来记录要插入,更新或删除的对象,并执行相应命令以实现对数据库的更改,语法格式为:
public void SubmitChanges()
同样的步骤过程:
建立数据库linq连接->创建相应表的类对象并实例化->linq对象.表名.InsertOnSubmit(表相应类的实例对象);->提交操作
linq.SubmitChanges();
2.修改数据:需要用到是SubmitChanges方法
这个过程相比之前还要简单,只需要将需改后的数据提交就可以了
例子:
string strCon="server=.;database=db_erp;uid=sa;pwd=123456";
DataClasses1DataContext linq=new DataClasses1DataContext(strCon);
var result=from employee in linq.tb_Employee
where employ.ID==txtID.Text
select employee;
foreach(tb_Empolyee tbemployee in result)
{
相应的复制操作;
linq.SubmitChanges();
}
3.删除数据:需要用到的是DeleteAllOnSubmit方法和SubmitChanges方法
DeleteAllOnSubmit用来将集合中的所有实体置于pending delete状态: void DeleteAllOnSubmit(IEnumerable entities)
entities表示要移除的所有项的集合
例子:
只写关键代码:
var result=from empolyee in linq.tb_Employee
where employee.ID==strID
select employee;
linq.tb_Employee.DeleteAllOnSubmit(result);
linq.SubmitChanges();
最后
以上就是甜美电脑为你收集整理的LINQ对SQL Server数据库的管理的全部内容,希望文章能够帮你解决LINQ对SQL Server数据库的管理所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复