[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文件,然后添加如下读取数据的代码,进行一次编译

 
  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.自己动手写页面来展示自己想要展示的效果

 
  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.添加样式表

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

 
  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

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

猜你喜欢

转载自blog.csdn.net/zyzBulus/article/details/81363371