当前位置:   article > 正文

使用EF框架实现MVC的增删改查功能!!!Entity Framework_mvc+ef增删改查

mvc+ef增删改查

一、什么是EF?

   ADO.NETEntity Framework 是微软以 ADO.NET 为基础所发展出来的对象关系对应 (O/R Mapping) 解决方案。ADO.NET Entity Framework 以 Entity DataModel (EDM) 为主,将数据逻  辑层切分为三块,分别为 Conceptual Schema, Mapping Schema 与 Storage Schema 三层,其上还有Entity Client,Object Context 以及 LINQ 可以使用。

EF的运作流程:

                                   


二、如何创建EF:

   右击项目——添加——新建项——数据(C#)——选择ADO.NET实体数据模型——点击添加——然后根据实体数据模型向导来一步步的做。

                                                                           

三、实现增删改查功能

  方法一

  在DAL层写下增删改查操作的代码
  1. <pre name="code" class="csharp"> //EF查询
  2. public userinfo GetUser(string username)
  3. {
  4. using (MyShopDBEntities1 entity = new MyShopDBEntities1())
  5. {
  6. userinfo user = entity.userinfo.SingleOrDefault(model => model.username == username);
  7. return user;
  8. }
  9. }
  10. //修改
  11. public userinfo Update(string username,string userpwd)
  12. {
  13. using (MyShopDBEntities1 entity = new MyShopDBEntities1())
  14. {
  15. // userinfo user = entity.userinfo.SingleOrDefault(model => model.username == username);
  16. userinfo user = entity.userinfo.FirstOrDefault(model => model.username == username);
  17. if (user != null)
  18. { user.userpassword=userpwd;
  19. entity.SaveChanges();
  20. }
  21. return user;
  22. }
  23. }
  24. //添加
  25. public userinfo Add(userinfo user)
  26. {
  27. using (MyShopDBEntities1 entity = new MyShopDBEntities1())
  28. {
  29. entity.userinfo.Add(
  30. new userinfo()
  31. {
  32. username = user.username,
  33. userpwd = user.userpwd
  34. });
  35. if (entity.SaveChanges() > 0)
  36. {
  37. return user;
  38. }
  39. else
  40. return null;
  41. }
  42. }
  43. //删除
  44. public void Deleted(string username)
  45. {
  46. using (MyShopDBEntities1 entity = new MyShopDBEntities1())
  47. {
  48. userinfo user = entity.userinfo.FirstOrDefault(m => m.username == username);
  49. if (user != null)
  50. {
  51. entity.userinfo.Remove(user);
  52. }
  53. if (entity.SaveChanges() > 0)
  54. {
  55. //return 0;
  56. }
  57. }
  58. }

   
 

 方法二:

  1. EF4.0和EF5.0增删改查的写法区别及执行Sql的方法
  2. EF4.0和EF5.0增删改查的写法区别
  3. public T AddEntity(T entity)
  4. {
  5. //EF4.0的写法
  6. 添加实体
  7. //db.CreateObjectSet<T>().AddObject(entity);
  8. //EF5.0的写法
  9. db.Entry<T>(entity).State = EntityState.Added;
  10. //下面的写法统一
  11. db.SaveChanges();
  12. return entity;
  13. }
  14. public bool UpdateEntity(T entity)
  15. {
  16. //EF4.0的写法
  17. //db.CreateObjectSet<T>().Addach(entity);
  18. //db.ObjectStateManager.ChangeObjectState(entity, EntityState.Modified);
  19. //EF5.0的写法
  20. db.Set<T>().Attach(entity);
  21. db.Entry<T>(entity).State = EntityState.Modified;
  22. return db.SaveChanges() > 0;
  23. }
  24. public bool DeleteEntity(T entity)
  25. {
  26. //EF4.0的写法
  27. //db.CreateObjectSet<T>().Addach(entity);
  28. //db.ObjectStateManager.ChangeObjectState(entity, EntityState.Deleted);
  29. //EF5.0的写法
  30. db.Set<T>().Attach(entity);
  31. db.Entry<T>(entity).State = EntityState.Deleted;
  32. return db.SaveChanges() > 0;
  33. }
  34. public IQueryable<T> LoadEntities(Func<T, bool> whereLambda)
  35. {
  36. //EF4.0的写法
  37. //return db.CreateObjectSet<T>().Where<T>(whereLambda).AsQueryable();
  38. //EF5.0的写法
  39. return db.Set<T>().Where<T>(whereLambda).AsQueryable();
  40. }
  41. 执行SQL语句
  42. //EF4.0的写法
  43. //int ExcuteSql(string strSql, ObjectParameter[] parameters);
  44. return EFContextFactory.GetCurrentDbContext().ExecuteFunction(strSql, parameters);
  45. //EF5.0的写法
  46. int ExcuteSql(string strSql, DbParameter[] parameters);
  47. return DEFContextFactory.GetCurrentDbContext().ExecuteSqlCommand(strSql, parameters);

    注:增删改操作必须使用entity.SaveChanges()进行保存一下。entity.SaveChanges()返回值为数据库里受影响的行数entity.SaveChanges()>0表示操作成功。如entity.SaveChanges()=0则表示操作失败。

  在BLL和UI层的代码和三层架构的代码一样,我就不一一写了。


                
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Monodyee/article/detail/666113
推荐阅读
相关标签
  

闽ICP备14008679号