在EF中使用原生SQL,首先要創建上下文對象
using (var db = new Entities()) { //數據操作 }
新增
string sql = "insert into UserInfo values('zhangsan','123456')"; db.Database.ExecuteSqlCommand(sql);
參數化新增
sql = "insert into UserInfo values(@UserName,@UserPass)"; var param = new SqlParameter[] { new SqlParameter("@UserName","lisi"), new SqlParameter("@UserPass","123456") }; db.Database.ExecuteSqlCommand(sql, param);
刪除
sql = "delete from UserInfo where UserName='zhangsan'"; db.Database.ExecuteSqlCommand(sql);
參數化刪除
sql = "delete from UserInfo where UserName=@UserName"; db.Database.ExecuteSqlCommand(sql, new SqlParameter("@UserName", "lisi"));
修改
sql = "update UserInfo set UserName='wangwu'"; db.Database.ExecuteSqlCommand(sql);
查詢多條記錄
sql = "select * from UserInfo"; var users = db.Database.SqlQuery<UserInfo>(sql); foreach (var user in users) { ObjectDumper.Write(user);//打印對象 }
總結:操作方式與ADO.NET類似,EF框架自動為我們封裝了數據庫鏈接和查詢對象。
完整案例:
//1.創建上下文對象 using (var db = new Entities()) { //增 string sql = "insert into UserInfo values('zhangsan','123456')"; db.Database.ExecuteSqlCommand(sql); //參數化新增 sql = "insert into UserInfo values(@UserName,@UserPass)"; var param = new SqlParameter[] { new SqlParameter("@UserName","lisi"), new SqlParameter("@UserPass","123456") }; db.Database.ExecuteSqlCommand(sql, param); //刪 sql = "delete from UserInfo where UserName='zhangsan'"; db.Database.ExecuteSqlCommand(sql); //參數化刪除 sql = "delete from UserInfo where UserName=@UserName"; db.Database.ExecuteSqlCommand(sql, new SqlParameter("@UserName", "lisi")); //改 sql = "update UserInfo set UserName='wangwu'"; db.Database.ExecuteSqlCommand(sql); //原生sql查詢 sql = "select * from UserInfo"; var users = db.Database.SqlQuery<UserInfo>(sql); foreach (var user in users) { ObjectDumper.Write(user);//打印對象 } }