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

简介:

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

实现效果


操作步骤

1.创建数据库


[sql] view plaincopyprint?在CODE上查看代码片派生到我的代码片

  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文件夹下自动生成了对应的控制器视图文件,我们打开会发现生成了一个页面,运行效果就如上面效果图所示。


[plain] view plaincopyprint?在CODE上查看代码片派生到我的代码片

  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实在方便多了。


欢迎关注我的围脖






















本文转蓬莱仙羽 51CTO博客,原文链接:http://blog.51cto.com/dingxiaowei/1424693,如需转载请自行联系原作者
相关文章
|
24天前
|
XML 开发框架 .NET
.NET 9 中 LINQ 新增功能实操
.NET 9 中 LINQ 新增功能实操
|
2月前
|
开发框架 .NET 开发工具
.NET 9 中 LINQ 新增的功能
.NET 9 中 LINQ 新增的功能
|
3月前
|
开发框架 前端开发 JavaScript
ASP.NET MVC 教程
ASP.NET 是一个使用 HTML、CSS、JavaScript 和服务器脚本创建网页和网站的开发框架。
45 7
|
3月前
|
存储 开发框架 前端开发
ASP.NET MVC 迅速集成 SignalR
ASP.NET MVC 迅速集成 SignalR
72 0
|
4月前
|
开发框架 前端开发 .NET
ASP.NET MVC WebApi 接口返回 JOSN 日期格式化 date format
ASP.NET MVC WebApi 接口返回 JOSN 日期格式化 date format
53 0
|
4月前
|
开发框架 前端开发 安全
ASP.NET MVC 如何使用 Form Authentication?
ASP.NET MVC 如何使用 Form Authentication?
|
4月前
|
开发框架 .NET
Asp.Net Core 使用X.PagedList.Mvc.Core分页 & 搜索
Asp.Net Core 使用X.PagedList.Mvc.Core分页 & 搜索
136 0
|
7月前
|
开发框架 前端开发 JavaScript
JavaScript云LIS系统源码ASP.NET CORE 3.1 MVC + SQLserver + Redis医院实验室信息系统源码 医院云LIS系统源码
实验室信息系统(Laboratory Information System,缩写LIS)是一类用来处理实验室过程信息的软件,云LIS系统围绕临床,云LIS系统将与云HIS系统建立起高度的业务整合,以体现“以病人为中心”的设计理念,优化就诊流程,方便患者就医。
83 0
|
7月前
|
开发框架 前端开发 .NET
ASP.NET CORE 3.1 MVC“指定的网络名不再可用\企图在不存在的网络连接上进行操作”的问题解决过程
ASP.NET CORE 3.1 MVC“指定的网络名不再可用\企图在不存在的网络连接上进行操作”的问题解决过程
208 0
|
存储 开发框架 前端开发
[回馈]ASP.NET Core MVC开发实战之商城系统(五)
经过一段时间的准备,新的一期【ASP.NET Core MVC开发实战之商城系统】已经开始,在之前的文章中,讲解了商城系统的整体功能设计,页面布局设计,环境搭建,系统配置,及首页【商品类型,banner条,友情链接,降价促销,新品爆款】,商品列表页面,商品详情等功能的开发,今天继续讲解购物车功能开发,仅供学习分享使用,如有不足之处,还请指正。
171 0