linq如何进行增删改查 *** 作

linq如何进行增删改查 *** 作,第1张

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()

}

)。但是,LINQ TO SQL不是万能的。例如,你在重新修改或设计数据库表格后,原先使用LINQ TO SQL生成的DATACONTEXT类并不会自动更新。因此,针对这些更改之后的 *** 作,需要特别注意。二、问题描述[一]本文中首先记录的是使用LINQ插入数据库记录时涉及的一个基本概念级问题。请看下面的代码片断:public bool InsertUserStatus(string UserName){eMailDataContext dt = new eMailDataContext()try{//删除可能存在的原有用户状态信息Table3 u = dt.Table3.First(m =>m.abc == UserName)//if (dt.Table3.Count() != 0)//{// Table3 u = dt.Table3.First(m =>m.abc == UserName)//if (u != null)//{dt.Table3.DeleteOnSubmit(u)dt.SubmitChanges()//}//}//创建新的用户状态信息Table3 userstatus = new Table3{abc = UserName}//插入到数据库表格UserStatus中dt.Table3.InsertOnSubmit(userstatus)dt.SubmitChanges()return true}catch (System.InvalidOperationException){return false//(2)}}上述代码的意思是,在表格Table3 中先删除可能存在的符合条件的记录,然后在此表格中再插入一条记录数据。上面的代码将“可能”引发异常,将流程控制转向(2)处。这些“可能”在于,数据表格Table3 中最初无记录,则必引发异常;如果有记录,则一切符合既定 *** 作要求。于是,修改上面的代码为如下:public bool InsertUserStatus(string UserName){eMailDataContext dt = new eMailDataContext()try{//删除可能存在的原有用户状态信息if (dt.Table3.Count() != 0)// (1){Table3 u = dt.Table3.First(m =>m.abc == UserName)if (u != null){dt.Table3.DeleteOnSubmit(u)dt.SubmitChanges()}}//创建新的用户状态信息Table3 userstatus = new Table3{abc = UserName}//插入到数据库表格UserStatus中dt.Table3.InsertOnSubmit(userstatus)dt.SubmitChanges()return true}catch (System.InvalidOperationException){return false}}也就是说,删除 *** 作前需要先判定数据表格是否记空--这可以通过红色的if语句((1)处)来实现。如此以来,无论表格中是否事先存在记录都可以往下执行可能的删除及插入 *** 作了。[二]再来看一个例子,例如: //删除旧的邮件public static void DeleteSubject(string UserName, string host){eMailDataContext dt = new eMailDataContext()string cmdText = "delete from MailDownloadTemp where UserName=" + "'"+UserName +"'"+ " and Host=" + "'"+host+"'"try{int result = dt.ExecuteCommand(cmdText)return}catch (System.InvalidOperationException){return}}上述 *** 作同样抛出异常。因此,需要同上面提到的那样,先进行数据库表格记录数据判断,再进行可能的删除 *** 作。因此,再修改上面代码,如下所示: //删除旧的邮件


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/10773575.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-11
下一篇 2023-05-11

发表评论

登录后才能评论

评论列表(0条)

保存