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

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

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

实现效果


操作步骤

1.创建数据库

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

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

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

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

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

<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

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


相关文章
|
21天前
|
SQL 开发框架 .NET
ASP.NET WEB+EntityFramework数据持久化——考核练习库——1、用户管理系统(考点:查询列表、增加、删除)
ASP.NET WEB+EntityFramework数据持久化——考核练习库——1、用户管理系统(考点:查询列表、增加、删除)
54 0
|
1月前
|
前端开发
.net core mvc获取IP地址和IP所在地(其实是百度的)
.net core mvc获取IP地址和IP所在地(其实是百度的)
82 0
|
1月前
|
开发框架 前端开发 .NET
ASP.NET CORE 3.1 MVC“指定的网络名不再可用\企图在不存在的网络连接上进行操作”的问题解决过程
ASP.NET CORE 3.1 MVC“指定的网络名不再可用\企图在不存在的网络连接上进行操作”的问题解决过程
21 0
|
2月前
|
Oracle 关系型数据库 数据管理
.NET医院检验系统LIS源码,使用了oracle数据库,保证数据的隔离和安全性
LIS系统实现了实验室人力资源管理、标本管理、日常事务管理、网络管理、检验数据管理(采集、传输、处理、输出、发布)、报表管理过程的自动化,使实验室的操作人员和管理者从繁杂的手工劳作中解放出来,提高了检验人员的工作效率和效益,降低了劳动成本和差错发生率。
|
7月前
|
开发框架 缓存 JSON
ASP.NET Core MVC 从入门到精通之Filter
ASP.NET Core MVC 从入门到精通之Filter
100 0
|
4月前
|
前端开发 JavaScript
.net core 前端传递参数有值 后端接收到的数据却是null
1、问题分析 在做接口测试时,偶然出现了前端输出有值,但是后端断点调试时却出现接收参数总是为null的情况 2、解决办法 前端打印log,看前端的每一个传值的数据类型,与后端请求参数类进行认真的一一比对 小技巧: ① 直接打印调用接口的传参值的数据类型,例如 console.log(type of this.form.name) --string console.log(type of this.form.age) --number 打印的数据类型与后端接口的参数类比对,查出不对应的类型 ② 关于非必填的值,默认传值可能出现空字符串(' ')、NaN值(Not a Number
68 0
|
4月前
|
SQL 开发框架 监控
|
5月前
|
JSON 数据格式
.NET Core - 配置绑定:使用强类型对象承载配置数据
.NET Core - 配置绑定:使用强类型对象承载配置数据
|
6月前
|
SQL 开发框架 前端开发
[回馈]ASP.NET Core MVC开发实战之商城系统(完:内附源码)
经过一段时间的准备,【ASP.NET Core MVC开发实战之商城系统】已经完成,目前代码已开发完成,先将全部内容整理分享,如有不足之处,还请指正。
86 0
|
7月前
|
存储 SQL 缓存
ASP.NET Core MVC 从入门到精通之缓存
ASP.NET Core MVC 从入门到精通之缓存
75 0

相关产品

  • 云迁移中心