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

asp .net mvc 专栏收录该内容
13 篇文章 0 订阅

一、什么是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层写下增删改查操作的代码
<pre name="code" class="csharp"> //EF查询
        public userinfo GetUser(string username)
        {
            using (MyShopDBEntities1 entity = new MyShopDBEntities1())
            {
               userinfo  user = entity.userinfo.SingleOrDefault(model => model.username == username);
                return user;
            }
        }
        
        //修改
        public userinfo Update(string username,string userpwd)
        {
            
            using (MyShopDBEntities1 entity = new MyShopDBEntities1())
            {
               // userinfo user = entity.userinfo.SingleOrDefault(model => model.username == username);
                userinfo user = entity.userinfo.FirstOrDefault(model => model.username == username);
                if (user != null) 
                {   user.userpassword=userpwd;
                    entity.SaveChanges(); 
                }
                
                return user; 
            } 
           
        }

       

        //添加
        public userinfo Add(userinfo user)
        {
            using (MyShopDBEntities1 entity = new MyShopDBEntities1())
            {
                entity.userinfo.Add(

                new userinfo()
                {
                    username = user.username,
                    userpwd = user.userpwd
                });
                if (entity.SaveChanges() > 0)
                {
                    return user;
                }
                else
                    return null;
            }
        }

        //删除
        public void Deleted(string  username)
        {
            using (MyShopDBEntities1 entity = new MyShopDBEntities1())
            {
                userinfo user = entity.userinfo.FirstOrDefault(m => m.username == username);
                if (user != null)
                {
                   entity.userinfo.Remove(user);
                }

                if (entity.SaveChanges() > 0)
                {
                    //return 0;
                }

            }
        }

   
 

 方法二:

 EF4.0和EF5.0增删改查的写法区别及执行Sql的方法

EF4.0和EF5.0增删改查的写法区别
public T AddEntity(T entity) 
{
    //EF4.0的写法  
    添加实体
    //db.CreateObjectSet<T>().AddObject(entity);
    //EF5.0的写法
    db.Entry<T>(entity).State = EntityState.Added;
    //下面的写法统一
    db.SaveChanges();
    return entity;
}
public bool UpdateEntity(T entity)
{
    //EF4.0的写法
    //db.CreateObjectSet<T>().Addach(entity);
    //db.ObjectStateManager.ChangeObjectState(entity, EntityState.Modified);
    //EF5.0的写法 
   db.Set<T>().Attach(entity); 
   db.Entry<T>(entity).State = EntityState.Modified; 
   return db.SaveChanges() > 0; 
}
public bool DeleteEntity(T entity)
{
    //EF4.0的写法 
   //db.CreateObjectSet<T>().Addach(entity);
   //db.ObjectStateManager.ChangeObjectState(entity, EntityState.Deleted);
   //EF5.0的写法
   db.Set<T>().Attach(entity);
   db.Entry<T>(entity).State = EntityState.Deleted;
   return db.SaveChanges() > 0;
}

public IQueryable<T> LoadEntities(Func<T, bool> whereLambda)
{
    //EF4.0的写法
    //return db.CreateObjectSet<T>().Where<T>(whereLambda).AsQueryable();
    //EF5.0的写法
    return db.Set<T>().Where<T>(whereLambda).AsQueryable();
}
执行SQL语句
//EF4.0的写法
//int ExcuteSql(string strSql, ObjectParameter[] parameters);
return EFContextFactory.GetCurrentDbContext().ExecuteFunction(strSql, parameters);
//EF5.0的写法
 int ExcuteSql(string strSql, DbParameter[] parameters);
return DEFContextFactory.GetCurrentDbContext().ExecuteSqlCommand(strSql, parameters);

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

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


                
  • 6
    点赞
  • 3
    评论
  • 20
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

相关推荐
<p> <span style="color:#000000;"><strong>大体分为3个阶段学习:</strong></span> </p> <p> <span style="color:#000000;"><strong>第一阶段是<span style="background-color:#FFE500;">mvc基础学习</span>,通过通俗易懂例子,体现mvc框架优势;</strong></span> </p> <p> <span style="color:#000000;"><strong>第二阶段是<span style="background-color:#FFE500;">EF学习</span>,通过实际案例,体现orm框架伟大之处;</strong></span> </p> <p> <span style="color:#000000;"><strong>第三阶段是<span style="background-color:#FFE500;">项目开发</span>阶段,采用mvc+ef+多层架构布局,采用TDD开发模式</strong></span><strong><span style="font-size:16px;">,大概功能如下:</span></strong> </p> <p> <br /> </p> <p> <span style="font-size:16px;"><strong>   《巧租房》是一个手机版租房网站,提供了搜索房源、预约看房、房源委托、后台抢单、房源管理、操作日志、定时报表、配置管理等功能。项目采用是b/s模式架构,包括一个后台管理和一个前端可以自适应于手机端页面,项目全程采用TDD开发模式,用到如下技术:</strong></span><span style="font-size:16px;"><strong> </strong></span> </p> <p> <span style="font-size:16px;"><strong>     </strong></span><span style="font-size:16px;"><span style="font-size:16px;"><strong> 前端技术:</strong></span><strong><span style="font-size:16px;">前端MVC引擎(artTemplate)、HUI、MUI(手机端自适应)、ValidForm、Layer;</span></strong><br /> </span> </p> <p> <span style="font-size:16px;"><span style="font-size:16px;"><strong>    .Net高级技术:</strong></span><strong><span style="font-size:16px;">自定义Filter、自定义ModelBinder、ASP.Net MVC+EntityFramework实践;</span></strong></span> </p> <p> <span style="font-size:16px;"><span style="font-size:16px;"><strong>     大型网站架构:</strong></span><strong><span style="font-size:16px;">UnitTest、AutoFac、分布式架构(Redis、Memecached等)、CDN与云存储、云计算服务(短信验证、SendCloud邮件云)、RBAC权限控制、页面静态化和SSI;数据库并发控制(悲观锁与乐观锁);</span></strong></span> </p> <p> <span style="font-size:16px;"><span style="font-size:16px;"><strong>      高级开源组件:</strong></span><strong><span style="font-size:16px;">ElasticSearch全文搜索引擎;Quartz.Net定时调度;UEditor;Log4Net**版;互联网网站安全(XSS、CSRF等);CodeCarvings.Piczard(水印、缩略图);CaptchaGen(验证码);WebUploader文件无刷新上传</span></strong></span> </p> <p> <span style="font-size:16px;"><strong><span style="font-size:16px;"><img src="https://img-bss.csdn.net/202002071220199742.png" alt="" /><br /> </span></strong></span> </p> <strong><span style="font-size:16px;"><img src="https://img-bss.csdn.net/202002071220288479.png" alt="" /></span></strong> <p> <br /> </p> <p> <br /> </p> <p> <img src="https://img-bss.csdn.net/202002071221023835.jpg" alt="" /> </p> <p> <img src="https://img-bss.csdn.net/202002071221196040.jpg" alt="" /> </p> <p> <img src="https://img-bss.csdn.net/202002071221399932.jpg" alt="" /> </p> <p> <img src="https://img-bss.csdn.net/202002071222055368.jpg" alt="" /> </p> <p> <img src="https://img-bss.csdn.net/202002071222246104.jpg" alt="" /> </p>
©️2020 CSDN 皮肤主题: 程序猿惹谁了 设计师:白松林 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值