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 参数