wordpress 商品站,wordpress主题开发ide,服务器试用,网页设计与制作教程考试一. 查询类(FromSql) 1.说明 A. SQL查询必须返回实体的所有属性字段。 B. 结果集中的列名必须与属性映射到的列名相匹配。 C. SQL查询不能包含关联数据 D. 除Select以为的其它SQL语句无法运行。 2.调用SQL语句的几种情况 A. 基本的原生SQL查询 B. 利用$内插语法进行传递 C. 原生… 一. 查询类(FromSql) 1.说明 A. SQL查询必须返回实体的所有属性字段。 B. 结果集中的列名必须与属性映射到的列名相匹配。 C. SQL查询不能包含关联数据 D. 除Select以为的其它SQL语句无法运行。 2.调用SQL语句的几种情况 A. 基本的原生SQL查询 B. 利用$内插语法进行传递 C. 原生SQL与linq语法相结合 D. 利用SqlParameter进行参数化查询 代码分享 1 {2 using (EFDB01Context db new EFDB01Context())3 {4 //1.基本的原生SQL查询5 var userList1 db.SetT_UserInfor().FromSql(select * from T_UserInfor where id!123).ToList();6 7 //2.利用$内插语法进行传递8 var myId 2fc343069e0a4a559b62b08d5999dbcd;9 var userList2 db.SetT_UserInfor().FromSql($select * from T_UserInfor where id {myId}).ToList();
10
11 //3.原生SQL与linq语法相结合
12 var userList3 db.SetT_UserInfor().FromSql($select * from T_UserInfor)
13 .Where(u u.id 2fc343069e0a4a559b62b08d5999dbcd)
14 .ToList();
15 var userList4 db.SetT_UserInfor().FromSql($select * from T_UserInfor)
16 .Where(u u.id ! 1111)
17 .OrderBy(u u.addTime)
18 .ToList();
19
20 //4.利用SqlParameter进行参数化查询
21 SqlParameter[] paras {
22 new SqlParameter(id,2fc343069e0a4a559b62b08d5999dbcd),
23 new SqlParameter(userName,ypf),
24 };
25 var userList5 db.SetT_UserInfor().FromSql(select * from T_UserInfor where idid and userNameuserName, paras).ToList();
26 }
27 } 3.调用存储过程的几种情况 可以利用SqlParameter传递参数防止sql注入。 A.不含任何参数 B.含多个输入参数 C.含输入参数和输出参数 用到的表结构 对应的生成存储过程的代码 1 USE [EFDB01]2 3 --事先准备插入两条数据4 select * from T_UserInfor5 truncate table T_UserInfor6 insert into T_UserInfor values(01,ypf,男,12,2019-08-08)7 insert into T_UserInfor values(02,ypf2,女,30,2019-09-08)8 9 -- 1. 不含任何参数存储过程
10 if (exists (select * from sys.objects where name GetAll))
11 drop proc GetAll
12 go
13 create proc GetAll
14 as
15 select * from T_UserInfor;
16
17 -- 调用
18 exec GetAll;
19
20
21 --2. 含多个输入参数的存储过程
22 if (exists (select * from sys.objects where name GetALLBy))
23 drop proc GetALLBy
24 go
25 create proc GetALLBy(
26 id varchar(32),
27 userName varchar(20)
28 )
29 as
30 select * from T_UserInfor where idid and userNameuserName;
31
32 exec GetALLBy id01,userNameypf;
33
34 --3. 含输出参数的存储过程
35 if (exists (select * from sys.objects where name GetSpecial))
36 drop proc GetSpecial
37 go
38 create proc GetSpecial(
39 userName varchar(32),
40 count int output
41 )
42 as
43 select countcount(*) from T_UserInfor;
44 select * from T_UserInfor where userName userName;
45
46 go
47 declare myCount int;
48 exec GetSpecial ypf,myCount output;
49 select myCount as myCount; 对应EF调用的代码 1 {2 using (EFDB01Context db new EFDB01Context())3 {4 //1. 不含任何参数存储过程5 var data1 db.SetT_UserInfor().FromSql(GetAll).ToList();6 7 //2. 含多个输入参数的存储过程8 SqlParameter[] para {9 new SqlParameter(id,01),
10 new SqlParameter(userName,ypf)
11 };
12 var data2 db.SetT_UserInfor().FromSql(GetALLBy id,userName, para).ToList();
13
14 //3. 带输出参数的存储过程
15 //把输出参数单独拿出来声明
16 SqlParameter myCount new SqlParameter(count, SqlDbType.Int);
17 myCount.Direction ParameterDirection.Output;
18 //把输出参数放到数组里
19 SqlParameter[] para2 {
20 new SqlParameter(userName,ypf),
21 myCount
22 };
23 var data3 db.SetT_UserInfor().FromSql(exec GetSpecial userName,count out, para2).ToList();
24 //通过输出参数在数组中的位置来获取返回值。
25 var count para2[1].Value;
26
27 }
28 } 二. 其它类(ExecuteSqlCommand) 1.说明 主要用于调用除了查询外其它的SQL语句。 2.调用SQL语句的情况 A. 基本的原生SQL查询 B. 利用$内插语法进行传递 C. 利用SqlParameter进行参数化查询 代码分享 1 {2 using (EFDB01Context db new EFDB01Context())3 {4 5 //1.增加6 int result1 db.Database.ExecuteSqlCommand(insert into T_UserInfor values(01,test1,男,21,2019-09-09));7 8 //2. 修改9 SqlParameter[] paras {
10 new SqlParameter(id,01),
11 new SqlParameter(userSex,未知),
12 };
13 int result2 db.Database.ExecuteSqlCommand(update T_UserInfor set userSexuserSex where idid, paras);
14
15 //3. 删除
16 var myId 01;
17 int result3 db.Database.ExecuteSqlCommand($delete from T_UserInfor where id{myId});
18
19 //4. 其它指令
20 int result4 db.Database.ExecuteSqlCommand(truncate table T_UserInfor);
21 }
22 } 3.调用存储过程的情况 存储过程代码 --4. 非查询类的存储过程
if (exists (select * from sys.objects where name DoSome))drop proc DoSome
go create proc DoSome(id varchar(32))
asbegin transactionbegin tryinsert into T_UserInfor values(id,ypf,男,12,2019-08-08);delete from T_UserInfor where id02commit transactionend trybegin catchrollback transactionend catchexec DoSome 03 EF的调用代码 1 {2 using (EFDB01Context db new EFDB01Context())3 {4 SqlParameter[] para {5 new SqlParameter(id,Guid.NewGuid().ToString(N)),6 };7 int n db.Database.ExecuteSqlCommand(DoSome id, para);8 if (n 0)9 {
10 Console.WriteLine(操作成功);
11 }
12 else
13 {
14 Console.WriteLine(没有更多数据进行处理);
15 }
16 }
17 } ! 作 者 : Yaopengfei(姚鹏飞)博客地址 : http://www.cnblogs.com/yaopengfei/声 明1 : 本人才疏学浅用郭德纲的话说“我是一个小学生”如有错误欢迎讨论请勿谩骂^_^。声 明2 : 原创博客请在转载时保留原文链接或在文章开头加上本人博客地址否则保留追究法律责任的权利。 转载于:https://www.cnblogs.com/yaopengfei/p/11459170.html