EF5执行sql查询语句 Database.SqlQuery 带返回值;EF5中 执行 sql语句使用Database.ExecuteSqlCommand 返回影响的行数 ;

1 //一: 执行sql语句,返回受影响的行数
2 
3 //在mysql里面,如果没有影响,那么返回行数为  -1 ,sqlserver 里面  还没有测试过
4 
5 using (var ctx = new MyDbContext())
6 {
7     ctx.Database.ExecuteSqlCommand("UPDATE Person SET Name = 'Michael' WHERE PersonID = 1");
8 }
 1 //二 : Database.SqlQuery<T>   EF5执行sql查询语句 Database.SqlQuery 带返回值
 2 
 3 //这个准确的说是  IEnumerable<T> SqlQuery<T>(string sql, params object[] parameters)  ,注意返回值是 IEnumerable
 4 
 5 //这个是执行sql语句,返回你想要的类型的列表
 6 
 7 dbMain.Database.SqlQuery<int>("select max(UserId) from tb_user_account").First();
 8 
 9 // 或者假如你自己有个类别
10 
11 public class PersonView
12 {
13     public int PersonID { get; set; }
14     public string Name { get; set; }
15 }
16 
17 //那么就可以直接返回这个 PersonView类 
18 using (var ctx = new MyDbContext())
19 {
20     var peopleViews = ctx.SqlQuery<PersonView>("SELECT PersonID, Name FROM Person").ToList();
21 }
22 
23 // 直接返回你想要的数据. 例如这里是 List<PersonView> 列表
 1 // 利用 Database.SqlQuery<T> 执行存储过程,并返回Output参数值
 2 
 3 var pCount = this._dataProvider.GetParameter();
 4 pCount.ParameterName = "totalCount";
 5 pCount.Direction = ParameterDirection.Output;
 6 pCount.DbType = DbType.Int32;
 7  
 8 var list = this._dbContext.SqlQuery<User>("exec P_GetList @totalCount out", pCount).ToList();
 9 
10 
11 //必须要加 .ToList(),否则获取不到 存储过程 的 Output 参数
原文地址:https://www.cnblogs.com/allenzhang/p/10405624.html