《MVC+EF实现增删改查》——查

    在MVC的控制器中查询数据库中的数据,然后在用视图显示出来,这套流程是怎么走的哪,下面我自己先宏观的总结一下。

    首先,在Controllers文件夹下创建HomeController控制器,然后在ActionResult Index()方法右击——>添加视图。然后在HomeController页面引用命名空间(Models)。

    一、查询数据

    查询数据的时候,我总结了四种方式,下面一个个介绍。

    1、第一种查询方式是使用标准的运算符(SQO)查询 

OumindBlogEntities db = new OumindBlogEntities();//实例化数据库实体对象
IQueryable<Models.BlogArticle> query= db.BlogArticles.Where(d => d.AIsDel==false);

    2、使用DBQuery延迟加载数据查询

OumindBlogEntities db = new OumindBlogEntities();//实例化数据库实体对象
DbQuery<MvcApplication1.Models.BlogArticle> query = (db.BlogArticles.Where(d => d.AIsDel == false)) as DbQuery<MvcApplication1.Models.BlogArticle>;

     延迟加载这特别的好玩,大家可以到网上查询一下相关的资料。

    3、使用List直接查询数据库,防止延迟加载数据

List<Models.BlogArticle> list = db.BlogArticles.Where(d => d.AIsDel == false).ToList();

    4、使用Linq语句查询     

List<Models.BlogArticle> list = (from d in db.BlogArticles where d.AIsDel == false select d).ToList();

    使用linq语句查询的时候,它的逻辑是:首先说明在哪个实体中查询数据(from d in db.BlogArtiticles)然后是将要查询的条件(where d.AIsDel == false),最后在实体中查询出来(select d)。使用Linq语句,.NET 编译器在编译程序集的时候,也就是将程序集编译成中间代码的时候,将Linq语句转为SQO(标准查询运算符)来执行,只不过Linq语句让程序员敲起来比较“爽”而已。

    二、将数据传送给相应的视图

    1、使用ViewBag传送数据

ViewBag.DataList = list; //使用ViewBag传输数据

    ViewBag是动态类型的,他的好处是我们可以随便给他添加属性

    2、使用ViewData传送数据

ViewData["DataList"] = list;//使用ViewData["DataList"]传输数据
return View();//加载视图


    三、显示页面

   传送给视图的是一个List,是一堆数据,视图需要将这一堆数据获取到,然将将其组织起来,这样才能形成美观的页面。下面在Index.cshtml中将list中的数据遍历出来,然后显示在页面上。

 <table id ="tbList">
        <tr>
            <th>ID</th>
            <th>标题</th>
            <th>分类</th>
            <th>状态</th>
            <th>时间</th>
            <th>操作</th>
        </tr>

    <!--遍历Action方法 设置给ViewData的集合数据,生成HTML代码-->
    @foreach (BlogArticle a in ViewData["DataList"] as List<BlogArticle>)
    {
        <tr>
            <td>@a.AId</td>
            <td>@a.ATitle</td>
            <td>@a.BlogArticleCate.Name</td>
            <td>@a.Enumeration.e_cname</td>
            <td>@a.AUpdatetime</td>
            <td>
                <a href="javascript:del(@a.AId)">删</a>
                <a href="javascript:(@a.AId)">改</a>
            </td>
        </tr>
    }
  </table></span>

  给这个table添加个样式,让其美观一些

<style type="text/css">
        #tbList {
            border:1px solid #0094ff;
            width:800px;
            margin:10px auto; /*上下10px;左右水平居中*/
            border-collapse:collapse;/*设置为收缩边框*/
        }
            #tbList th, td {
                 border:1px solid #0094ff;
                 padding:10px;/*将内容与单元格填充开*/
            }

  这样,数据就完美的呈现在浏览器界面了,下面是效果图。

《MVC+EF实现增删改查》——查_第1张图片 


    四、总结

   终于写完了,这些东东包含着很多的知识点,我们只有经常使用,经常练习,这样才能将效率提升上去。在这里我感受到EF做的的确挺强大,可以联查,再配合Razor语法的使用,方便了编程人员的使用。.NET 还有很多要学习的地方,继续奋斗吧!


你可能感兴趣的:(《MVC+EF实现增删改查》——查)