• 2013年7月11日_枣庄asp.net mvc 数据库操作


    1、根据数据库来反向生成实体类 

    /// <summary>
    /// 数据上下文对象,用它来灵活的访问各个实体类
    /// </summary>
    OumindBlogEntities db = new OumindBlogEntities();

    2、操作数据库

     #region 0.2 查询 文章 列表 +ActionResult Index()
            /// <summary>
            /// 查询 文章 列表
            /// </summary>
            /// <returns></returns>
            public ActionResult Index()
            {
                //1.查询 数据库里的 文章数据(通过 EF 执行)
                //1.1第一种方式:使用 SQO(标准查询运算符),查询 所有未软删除的文章
                //实际返回的 是一个 IQueryable 对象?此处其实是返回了一个 IQueryable接口的子类对象
                //IQueryable<Models.BlogArticle> query = db.BlogArticles.Where(d => d.AIsDel == false);
                //此时真实 返回的 类型为 DbQuery<T>,支持 延迟加载:只有当使用到数据的时候,才去 查询数据库!
                //DbQuery<Models.BlogArticle> query = (db.BlogArticles.Where(d => d.AIsDel == false)) as DbQuery<Models.BlogArticle>;
                //直接将 返回的 DBQuery转成  List<T>集合,也就是立即查询数据库,并返回查询到的集合
                //List<Models.BlogArticle> list = db.BlogArticles.Where(d => d.AIsDel == false).ToList();
    
                //1.2第二种方式:使用 Linq 语句,查询 所有为软删除的 文章
                // *Linq 仅仅是 给成员用的 语法糖,.Net编译器会在编译程序集(中间代码)的时候,将Linq语句 转成 SQO(标准查询运算符)
                List<Models.BlogArticle> list = (from d in db.BlogArticles where d.AIsDel == false select d).ToList();
    
                //2.将集合数据传给视图
                //ViewBag.DataList = list;
                ViewData["DataList"] = list;
    
                //3.“加载”视图
                return View();
            }
            #endregion

     3、对数据操作

     #region 0.3执行删除操作(根据id) +ActionResult Del(int id)
            /// <summary>
            /// 执行删除操作(根据id)
            /// </summary>
            /// <param name="id">要删除的文章id - /home/del/12 </param>
            /// <returns></returns>
            public ActionResult Del(int id)//此id 会根据 路由的url配置{id}占位符 ,而被 12 替换掉
            {
                try
                {
                    //1.创建要删除的对象
                    BlogArticle modelDel = new BlogArticle() { AId = id };
                    //2.将对象 添加到 EF 管理容器
                    db.BlogArticles.Attach(modelDel);
                    //3.将对象包装类的 状态 标识为 删除状态
                    db.BlogArticles.Remove(modelDel);
                    //4.更新到数据库
                    db.SaveChanges();
                    //5.更新成功,则命令浏览器 重定向 到 /Home/List 方法
                    return RedirectToAction("Index","Home");
                }
                catch (Exception ex)
                {
                    return Content("删除失败~~~" + ex.Message);
                }
            } 
            #endregion
    
            #region 0.4 显示要修改的数据 +ActionResult Modify(int id)
            [HttpGet]
            /// <summary>
            /// 0.4 显示要修改的数据
            /// </summary>
            /// <param name="id">要修改的文章的id</param>
            /// <returns></returns>
            public ActionResult Modify(int id)
            {
                //1.根据id 查询数据库,返回的集合中 拿到 第一个 实体对象
                BlogArticle art = (from a in db.BlogArticles where a.AId == id select a).FirstOrDefault();
                //2.生成 文章分类 下拉框 列表集合  <option value="1">文本</option>
                IEnumerable<SelectListItem> listItem = (from c in db.BlogArticleCates
                                              where c.IsDel == false select c).ToList()
                                              .Select(c=> new SelectListItem { Value = c.Id.ToString(), Text = c.Name });
                //将生成的文章分类 下拉框选项集合 设置给 ViewBag
                ViewBag.CateList = listItem;
                
                //List<SelectListItem> list;
    
                //3.将 art 传递 给 视图显示
                //ViewBag
                //ViewData
                //* “加载”视图,使用View的构造函数,将 数据 传给 视图上的 名为 Model 的 属性
                return View(art);
            } 
            #endregion
    
            #region 0.5 执行修改 +ActionResult Modify(BlogArticle model)
            [HttpPost]
            /// <summary>
            /// 0.5 执行修改
            /// </summary>
            /// <param name="model"></param>
            /// <returns></returns>
            public ActionResult Modify(BlogArticle model)
            {
                try
                {
                    //1.将实体对象 a.加入 EF 对象容器中,并 b.获取 伪包装类对象
                    DbEntityEntry<BlogArticle> entry = db.Entry<BlogArticle>(model);
                    //2.将包装类对象的状态设置为 unchanged
                    entry.State = System.Data.EntityState.Unchanged;
                    //3.设置 被改变的属性
                    entry.Property(a => a.ATitle).IsModified = true;
                    entry.Property(a => a.AContent).IsModified = true;
                    entry.Property(a => a.ACate).IsModified = true;
    
                    //4.提交到数据库 完成修改
                    db.SaveChanges();
                    //5.更新成功,则命令浏览器 重定向 到 /Home/List 方法
                    return RedirectToAction("Index", "Home");
                }
                catch (Exception ex)
                {
                    return Content("修改失败~~~" + ex.Message);
                }
            } 
            #endregion
        }
    }
  • 相关阅读:
    解决web网页访问慢的问题
    Django安装配置(for Mac)
    Django安装(for Mac)
    HTML5中的新事件
    关于http-equiv
    【转】@fant-face
    textarear中的value....还是...innertext
    清除浮动的元素的margin-top触碰不到,浮动元素的边界
    常用排序算法总结(一)
    JS常用特效方法总结
  • 原文地址:https://www.cnblogs.com/kongbin/p/3185015.html
Copyright © 2020-2023  润新知