• [转][MVC4]ASP.NET MVC4+EF5(Lambda/Linq)读取数据


    本文转自:https://blog.csdn.net/dingxiaowei2013/article/details/29405687

    继续上一节初始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也不错','丁小未')  
    --创建表格--
    Create table News
    (
     id int identity(1,1) primary key,
     NewsTitle varchar(100)not null,
     CreateTime Datetime,
     Context text,
     Author varchar(10)
    )
    
    --插入数据--
    insert into dbo.News(NewsTitle,CreateTime,Context,Author)values('学习mvc4',GETDATE(),'我们一起来玩MVC4','丁小未')
    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文件,然后添加如下读取数据的代码,进行一次编译
    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. }  
    public ActionResult Index()
    {
                Models.MVCDemoEntities db = new Models.MVCDemoEntities();
                List<Models.News> news = db.News.Where(u => u.id>0).ToList();
                return View(news);
    }

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

    然后发现在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>  
    @model IEnumerable<MvcApplication1.Models.News>
    
    @{
        ViewBag.Title = "Index";
    }
    
    <h2>Index</h2>
    
    <p>
        @Html.ActionLink("Create New", "Create")
    </p>
    <table>
        <tr>
            <th>
                @Html.DisplayNameFor(model => model.NewsTitle)
            </th>
            <th>
                @Html.DisplayNameFor(model => model.CreateTime)
            </th>
            <th>
                @Html.DisplayNameFor(model => model.Context)
            </th>
            <th>
                @Html.DisplayNameFor(model => model.Author)
            </th>
            <th></th>
        </tr>
    
    @foreach (var item in Model) {
        <tr>
            <td>
                @Html.DisplayFor(modelItem => item.NewsTitle)
            </td>
            <td>
                @Html.DisplayFor(modelItem => item.CreateTime)
            </td>
            <td>
                @Html.DisplayFor(modelItem => item.Context)
            </td>
            <td>
                @Html.DisplayFor(modelItem => item.Author)
            </td>
            <td>
                @Html.ActionLink("Edit", "Edit", new { id=item.id }) |
                @Html.ActionLink("Details", "Details", new { id=item.id }) |
                @Html.ActionLink("Delete", "Delete", new { id=item.id })
            </td>
        </tr>
    }
    
    </table>
    

    效果图

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

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

    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>  
    @model IEnumerable<MvcApplication1.Models.News>    //进行一个头文件的引用
    @{
        ViewBag.Title = "Index";
    }
    
    <h2>展示列表</h2>
    <table>
    
        <tr>
            <td>标题</td>
            <td>发布日期</td>
            <td>发布人</td>
        </tr>
    
        @foreach (var item in Model)
        {
            <tr>
                <td>@item.NewsTitle</td>
                <td>@item.CreateTime</td>
                <td>@item.Author</td>
            </tr>
        }
    
    </table>
    


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

    效果图


    5.添加样式表

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

    1. <style type="text/css">  
    2.     #tb{  
    3.   
    4.     }  
    5.     #tb tr td{  
    6.         border:1px solid #090808;  
    7.     }  
    8. </style>  
    <style type="text/css">
        #tb{
    
        }
        #tb tr td{
            border:1px solid #090808;
        }
    </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

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


    版权声明:本文为博主原创文章,未经博主允许不得转载。Unity交流群:159875734 https://blog.csdn.net/s10141303/article/details/29405687
  • 相关阅读:
    pyqt5 动画在QThread线程中无法运行问题
    几种编码格式
    Android精品课程—PullToRefresh 下拉刷新
    【张泽华】android视频教程下载地址及上课源代码
    Android中常用适配器及定义自己的适配器
    VirtualBOX 虚拟机安装 OS X 10.9 Mavericks 及 Xcode 5,本人X220亲测
    google maps api申请的问题
    如何在Android应用程序中使用传感器(OpenIntents开源组织SensorSimulator项目)
    cvsnt 设置用户、修改密码
    Windows下用Git下载android源码 转载
  • 原文地址:https://www.cnblogs.com/freeliver54/p/9075210.html
Copyright © 2020-2023  润新知