EF增删查改加执行存储过程和sql语句,多种方法汇总

 1 ActionUrl c = new ActionUrl() { ActionName="test", RequestUrl="/123/123", SubTime=DateTime.Now };
 2             //
 3             using (EntityContext db = new EntityContext())
 4             {
 5 
 6                 /*方法1*/
 7                 db.ActionUrls.Add(c);
 8                 db.SaveChanges();
 9                 /*方法2*/
10                 db.Set<ActionUrl>().Attach(c);
11                 db.Entry<ActionUrl>(c).State = EntityState.Added;
12                 db.SaveChanges();
13                 //return c;
14                 /*方法3*/
15                 //EF4.0的写法  
16                 //db.CreateObjectSet<T>().AddObject(entity);
17 
18             }
19             //
20             using (EntityContext db = new EntityContext())
21             {
22                 c = db.ActionUrls.Where(t => t.ActionName == "test").FirstOrDefault();
23             }
24             //
25             using (EntityContext db = new EntityContext())
26             {
27                 /*方法1*/
28                 c.ActionName = "test001";
29                 db.ActionUrls.Attach(c);
30                 db.Entry<ActionUrl>(c).State = EntityState.Modified;
31                 db.SaveChanges();
32                 /*方法2*/
33                 c.ActionName = "test002";
34                 db.SaveChanges();
35                 //return db.SaveChanges() > 0;
36                 /*方法3*/
37                 //EF4.0的写法 
38                 //db.CreateObjectSet<T>().Addach(entity);
39                 //db.ObjectStateManager.ChangeObjectState(entity, EntityState.Modified);
40             }
41             //
42             using (EntityContext db = new EntityContext())
43             {
44                 /*方法1*/
45                 //此处删除的对象不能是自己定义出来的对象,只能是数据库查询出来的对象
46                 c = db.ActionUrls.Where(t => t.ActionName == "test").FirstOrDefault();
47                 db.ActionUrls.Remove(c);
48                 db.SaveChanges();
49                 /*方法2*/
50                 //c = db.ActionUrls.Where(t => t.ActionName == "test").FirstOrDefault();
51                 db.Set<ActionUrl>().Attach(c);
52                 db.Entry<ActionUrl>(c).State = EntityState.Deleted;
53                 db.SaveChanges();
54                 //return db.SaveChanges() > 0;
55                 /*方法3*/
56                 //EF4.0的写法 
57                 //db.CreateObjectSet<T>().Addach(entity);
58                 //db.ObjectStateManager.ChangeObjectState(entity, EntityState.Deleted);
59             }
60 
61             //存储过程和sql语句
62             EntityContext dbsql = new EntityContext();
63             SqlParameter[] parameters = new SqlParameter[]{
64                 new SqlParameter("@name",SqlDbType.NVarChar)
65             };
66             parameters[0].Value = "test";
67             
68             //执行strSql/procSql
69             //返回受影响的行数
70             int i = dbsql.Database.ExecuteSqlCommand("exec getActionUrlId @name", parameters);
71 
72             List<ActionUrl> dd01 = dbsql.Database.SqlQuery(typeof(ActionUrl), "exec getActionUrlId @name", parameters).Cast<ActionUrl>().ToList();
73             //执行strSql/procSql
74             //返回数据的集合
75             List<ActionUrl> dd02 = dbsql.Database.SqlQuery<ActionUrl>("exec getActionUrlId @name", parameters).ToList();//返回查询到的实体集合

 大致的增删查改和存储过程,执行sql语句和执行存储过程差不多。只有删除比较特殊!

原文地址:https://www.cnblogs.com/love201314/p/4725084.html