linq如何进行增删改查操作
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linq如何进行增删改查操作相关的知识,希望对你有一定的参考价值。
参考技术A new Func<string, int>(delegate (string str) return str.Length; );(delegate (string str) return str.Length; ); //匿名方法
(string str) => return str.Length; ; //Lambda语句
(string str) => str.Length; //Lambda表达式
(str) => str.Lenth; //省略类型,让IDE去判断
str => str.Lenth; //去掉括号
Linq操作的是数据对象,所以需要先建立一个实体对象模型,操作的表如下
USE [IBBC]
GO
CREATE TABLE [Table_1](
IDD INT PRIMARY KEY NOT NULL,
Nnmae VARCHAR(15) NULL
)
INSERT [dbo].[Table_1] ([IDD], [Nnmae]) VALUES (100, N'清高祖'),(102, N'清高宗'),
(103, N'清太祖'),(104, N'Test1'),
(105, N'Test2'),(106, N'Test3'),
(107, N'Test4'),(108, N'Test5')
查询:
public void Dbquery(int id)
IBBCEntities db = new IBBCEntities(); var request = from d in db.Table_1 where d.IDD == id select new d.IDD, d.Nnmae ;
foreach (var item in request)
Console.WriteLine("查询语法: " + item);
var request1 = db.Table_1.SingleOrDefault(b => b.IDD == id);
Console.WriteLine("(SQO)方法语法: " +request1.IDD+" "+request1.Nnmae);
Console.ReadKey();
添加:
//添加:
var add1 = db.Table_1.SingleOrDefault(c=>c.IDD==1010); if (add1.IDD.Tostring()==null)
Table_1 tb = new Table_1
IDD = 1010,
Nnmae = "张三丰"
;
db.Table_1.Add(tb);
db.SaveChanges();
(PS:add1.IDD为Int类型,所以永远不会等于null,故取其ToString(),下同))
修改:
//修改var update1 = db.Table_1.SingleOrDefault(c => c.IDD == 1010);if (update1.IDD.Tostring()!=null)
update1.Nnmae = "张君宝";
db.SaveChanges();
删除:
//删除
var delete1 = db.Table_1.SingleOrDefault(c=>c.IDD==1010); if (delete1.IDD.Tostring()!=null)
db.Table_1.Remove(delete1);
db.SaveChanges();
参考技术B
说明:更新操作,先获取对象,进行修改操作之后,直接调用SubmitChanges()方法即可提交。注意,这里是在同一个DataContext中,对于不同的DataContex看下面的讲解。
1.简单形式
- C# codeCustomer cust =
db.Customers.First(c => c.CustomerID == "ALFKI");
cust.ContactTitle = "Vice President";
linQ!!增删改查 好用!
数据库访问技术:
ADO.net
EF框架
LinQ
LinQ是一种高集成化的数据库访问技术,他将数据库中的表映射成程序中的类
数据库的表名变成类名
数据库的列名变成字段名/属性名
所有的操作都是通过LinQ自动生成的一个上下文对象来进行操作的,这个对象名是LinQ的名字+"DataContext" ,一个数据库对应一个LinQ
1、创建LinQ
在项目上右键,添加一个LinQ to SQL
然后点击服务器资源管理器,选择小插头样式的连接到数据库
正确填写需要连接的数据库信息,点击确定,然后在左边就可以看到数据库结构,将需要的表直接拖动到界面上即可
2、去除数据访问类的简便开发方式
使用LinQ时,可以不写数据访问类,直接在程序用调用,这样既省时间,也节省内存
使用方法:using(实例化上下文对象){}
using (Data0928DataContext con = new Data0928DataContext()) { Repeater1.DataSource = con.Users.ToList(); Repeater1.DataBind(); }
3、查询、条件查询
普通查询:查询全部只需一句代码
con.Users.Tolist()
条件查询:需要使用Lambda表达式
注意:不管结果有几条数据,返回的都是集合,使用FirstOrDefault取第一个值,并且如果为空不会报错,会返回null
Users u = con.Users.Where(r => r.ids == ids).FirstOrDefault();
4、删除
删除方法需要一个对象,需要先通过条件查询查出此对象才能进行删除,并且需要SubmitChanges方法才是正式执行方法
con.Users.DeleteOnSubmit(con.Users.Where(r => r.ids == ids).FirstOrDefault()); con.SubmitChanges();
5、修改
修改不需要想ADO.net中那样需要写很长的字符串,只需要查出需要修改的对象,对这个对象的属性直接修改,修改完毕执行SubmitChanges方法提交即可
Users u = con.Users.Where(r => r.UserName == username.Text).FirstOrDefault(); u.PassWord = password.Text; u.NickName = nickname.Text; if (RadioButton1.Checked) u.Sex = true; else u.Sex = false; u.Birthday = Convert.ToDateTime(birthday.Text); u.Nation = DropDownList1.SelectedValue; u.Class = DropDownList2.SelectedValue; try { con.SubmitChanges(); Response.Redirect("Index.aspx"); } catch { Label1.Text = "修改失败!"; }
6、属性扩展
VS允许用户对LinQ生成的实体类进行扩展,只需要创建一个跟实体类相同名的类,写上partial,即可在此类里面写自己需要的属性。
直接在LinQ生成的文件中写也有效,但是如果对LinQ执行任何修改,哪怕只是拖动一下界面的表位置,也会导致代码重新生成,这样自己写进去的属性扩展就会消失,所以只能通过新建一个同名partial类进行添加
public partial class Users { public string SexStr { get { string end = "<无数据>"; if (this._Sex != null) { end = Convert.ToBoolean(this._Sex) ? "images/1.png" : "images/0.png"; } return end; } } public string NationName { get { return Nation1.NationName; } } public string ClassName { get { return Class1.ClassName; } } }
以上是关于linq如何进行增删改查操作的主要内容,如果未能解决你的问题,请参考以下文章