zoukankan      html  css  js  c++  java
  • [MVC4]ASP.NET MVC4+EF5(Lambda/Linq)读取数据

    继续上一节初始ASP.NET MVC4,继续深入学习,感受了一下微软的MVC4+EF5(EntityFramework5)框架的强大,能够高效的开发出网站应用开发系统,下面就看一下如何用MVC4+EF5来实现数据的读取。

    实现效果

    操作步骤

    1.创建数据库

    1. --创建表格--  
    2. Create table News  
    3. (  
    4.  id int identity(1,1) primary key,  
    5.  NewsTitle varchar(100)not null,  
    6.  CreateTime Datetime,  
    7.  Context text,  
    8.  Author varchar(10)  
    9. )  
    10.   
    11. --插入数据--  
    12. insert into dbo.News(NewsTitle,CreateTime,Context,Author)values('学习mvc4',GETDATE(),'我们一起来玩MVC4','丁小未')  
    13. insert into dbo.News(NewsTitle,CreateTime,Context,Author)values('我会unity',GETDATE(),'跨平台的unity也不错','丁小未')  



    创建完毕数据库,然后添加两条数据,方便我们后面进行调用。

    2.创建Model实体对象

    在model文件鼠标右击->添加->新建项目->数据->ADO.NET实体数据模型,重命名:MVCDemoModel,点击生成。

    连接本地数据库

    选择数据库连接

    填写连接信息

    选择某个表

    点击生成,会发现Models文件夹下生成了对应的Model实体对象模型,这就是EntityFramework的强大之处。

    下面有一个news.cs文件,打开会发现是实体对象模型

    MVCDemoModel文件中的MVCDemoEntities类是操作要显示的实体对象模型的类

    3.在Controller中将数据库中的数据获取发送给前端显示

    打开Controller文件,然后添加如下读取数据的代码,进行一次编译
    [csharp] view plaincopyprint?在CODE上查看代码片派生到我的代码片
     
    1. public ActionResult Index()  
    2. {  
    3.             Models.MVCDemoEntities db = new Models.MVCDemoEntities();  
    4.             List<Models.News> news = db.News.Where(u => u.id>0).ToList();  
    5.             return View(news);  
    6. }  

    编译成功后,继续上一节的添加视图

    然后发现在Views文件夹下自动生成了对应的控制器视图文件,我们打开会发现生成了一个页面,运行效果就如上面效果图所示。

    1. @model IEnumerable<MvcApplication1.Models.News>  
    2.   
    3. @{  
    4.     ViewBag.Title = "Index";  
    5. }  
    6.   
    7. <h2>Index</h2>  
    8.   
    9. <p>  
    10.     @Html.ActionLink("Create New", "Create")  
    11. </p>  
    12. <table>  
    13.     <tr>  
    14.         <th>  
    15.             @Html.DisplayNameFor(model => model.NewsTitle)  
    16.         </th>  
    17.         <th>  
    18.             @Html.DisplayNameFor(model => model.CreateTime)  
    19.         </th>  
    20.         <th>  
    21.             @Html.DisplayNameFor(model => model.Context)  
    22.         </th>  
    23.         <th>  
    24.             @Html.DisplayNameFor(model => model.Author)  
    25.         </th>  
    26.         <th></th>  
    27.     </tr>  
    28.   
    29. @foreach (var item in Model) {  
    30.     <tr>  
    31.         <td>  
    32.             @Html.DisplayFor(modelItem => item.NewsTitle)  
    33.         </td>  
    34.         <td>  
    35.             @Html.DisplayFor(modelItem => item.CreateTime)  
    36.         </td>  
    37.         <td>  
    38.             @Html.DisplayFor(modelItem => item.Context)  
    39.         </td>  
    40.         <td>  
    41.             @Html.DisplayFor(modelItem => item.Author)  
    42.         </td>  
    43.         <td>  
    44.             @Html.ActionLink("Edit", "Edit", new { id=item.id }) |  
    45.             @Html.ActionLink("Details", "Details", new { id=item.id }) |  
    46.             @Html.ActionLink("Delete", "Delete", new { id=item.id })  
    47.         </td>  
    48.     </tr>  
    49. }  
    50.   
    51. </table>  

    效果图

    以上就是最简单的MVC+EF数据读取的最简单的示例,微软帮我们做了很多工作,但这种自动话生成的操作并不适合我们新手的学习,我们还是自己来手动创建空白文件来实现这个展示的效果,也知道微软做的这些操作的原理性的东西。

    4.自己动手写页面来展示自己想要展示的效果

    [csharp] view plaincopyprint?在CODE上查看代码片派生到我的代码片
     
    1. @model IEnumerable<MvcApplication1.Models.News>    //进行一个头文件的引用  
    2. @{  
    3.     ViewBag.Title = "Index";  
    4. }  
    5.   
    6. <h2>展示列表</h2>  
    7. <table>  
    8.   
    9.     <tr>  
    10.         <td>标题</td>  
    11.         <td>发布日期</td>  
    12.         <td>发布人</td>  
    13.     </tr>  
    14.   
    15.     @foreach (var item in Model)  
    16.     {  
    17.         <tr>  
    18.             <td>@item.NewsTitle</td>  
    19.             <td>@item.CreateTime</td>  
    20.             <td>@item.Author</td>  
    21.         </tr>  
    22.     }  
    23.   
    24. </table>  


    这种写法跟之前的asp时代比较像,也跟现在.net时代下的模板引擎的用法也比较类似!

    效果图


    5.添加样式表

    上面的表格没有样式实在是太不好看了,简单添加个样式表,然后运行看看效果

    [csharp] view plaincopyprint?在CODE上查看代码片派生到我的代码片
     
    1. <style type="text/css">  
    2.     #tb{  
    3.   
    4.     }  
    5.     #tb tr td{  
    6.         border:1px solid #090808;  
    7.     }  
    8. </style>  


    6.Linq操作Model

    Lambda可以操作Model,Linq同样也可以查询返回数据,这两种效果等同。

    //Linq方式

    var news =  from n in db.News select n;

    //Lambda方式

    List<Models.News> news = db.News.Where(u => u.id>0).ToList();

    运行的结果是一样的,之前搞三层写的比较复杂,现在出了MVC实在方便多了。

    欢迎关注我的围脖

    ==================== 迂者 丁小未 CSDN博客专栏=================

    MyBlog:http://blog.csdn.net/dingxiaowei2013             MyQQ:1213250243

    Unity QQ群:375151422                                     cocos2dx QQ群:280818155

    ====================== 相互学习,共同进步 ===================

  • 相关阅读:
    在多租户(容器)数据库中如何创建PDB:方法6 DBCA本地克隆PDB
    在多租户(容器)数据库中如何创建PDB:方法5 DBCA远程克隆PDB
    1级搭建类104-Oracle 12cR2 单实例 FS(阿里云)公开
    在多租户(容器)数据库中如何创建PDB:方法4 克隆远程Non-CDB
    在多租户(容器)数据库中如何创建PDB:方法3 克隆远程PDB
    番外:克隆本地PDB中其他参数和子句的说明
    在多租户(容器)数据库中如何创建PDB:方法2 克隆本地PDB
    Oracle Solaris 10 重启后提示 Bad PBR sig
    在多租户(容器)数据库中如何创建PDB:方法1 从种子创建PDB
    0级搭建类009-Fedora 30 安装(F30) 公开
  • 原文地址:https://www.cnblogs.com/dingxiaowei/p/3779226.html
Copyright © 2011-2022 走看看