Fork me on GitHub

MVC5 Entity Framework学习(12):Entity Framework高级功能

在之前的文章中,你已经学习了如何实现每个层次结构一个表继承。本节中你将学习使用Entity Framework Code First来开发ASP.NET web应用程序时可以利用的高级功能。在本节中你将重用之前已经创建的页面,接下来你需要新建一个页面并使用原始SQL来批量更新数据库中所有Course的学分。执行原始SQL查询 Entity FrameworkCode First API包含有可以让你直接向数据库发送SQL命令的方法。以下几种方法可以实现这种

MVC5 Entity Framework学习(11):实现继承

之前你已经学习了如何处理并发异常,在本节中你将学习如何实现继承。在面向对象的编程中,你可以使用继承来重用代码。接下来你将修改Instructor和Student类,让它们派生自Person基类,该基类包含instructor和student共有的属性如LastName。你不需要添加或修改任何WEB页面,但是你需要修改某些代码,这些修改会自动反映在数据库中。映射继承到数据库的选项

MVC5 Entity Framework学习(9):异步和存储过程

在之前的文章中,你已经学习了如何使用同步编程模型来读取和更新数据,在本节中你将学习如何实现异步编程模型。异步可以使应用程序执行更有效率,因为它可以更有效的使用服务器资源。同样在本节中你还将学习如何针对实体的insert, update, 和delete操作使用存储过程。最后将应用程序部署到 Windows Azure。下面是完成后的页面

MVC5 Entity Framework学习(8):更新相关数据

在上篇文章中学习了如何在页面中显示相关数据,本节中将学习如何对相关数据进行更新。对于大多数实体关系,可以通过更新外键或导航属性来更新数据,对于多对多关系,Entity Framework不会直接公开连接表,所以你需要通过相应的导航属性来添加和移除实体。

MVC5 Entity Framework学习(7):读取相关数据

前一篇文章中完成了School 数据模型,接下来你将学习如何读取和显示相关的数据——这里指Entity Framework加载至导航属性中的数据。延迟、预先和显示加载相关数据 Entity Framework可以通过多种方法向实体的导航属性中加载数据 延迟加载(Lazy loading) 当实体第一次被读取时,相关数据并不会被检索。但是,当你第一次访问导航属性时,该导航属性所需的数据会自动加载。这是向数据库发送多个查询语句的结果——一次是读取实体本身,接着是每次与被检索的实体相关的数据。

MVC5 Entity Framework学习(6):创建复杂的数据模型

Contoso University示例程序演示了如何使用Entity Framework 6 Code First 和 Visual Studio 2013创建ASP.NET MVC 5应用程序。在上一篇文章中你已经创建了由三个实体组成的简单的数据模型。在本文章中你将会添加更多的实体和关系,并且通过指定格式、验证和数据库映射规则来自定义数据模型。这里介绍两种自定义数据模型的方法:向实体类中添加属性和向数据库上下文类中添加代码。

MVC5 Entity Framework学习(5):Code First迁移和部署

到目前为止,应用程序一直在本地IIS Express 上运行。为了让其他人能够通过互联网访问你的应用程序,你需要将它部署到WEB服务器。本文章包含以下内容:启用Code First迁移,迁移功能能够让你不必重建数据库就可以更改数据模型并将其部署到生产环境。将应用程序部署到Windows Azure(可选)

MVC5 Entity Framework学习(4):弹性连接和命令拦截

到目前为止,应用程序一直在本地IIS Express上运行。如果你想让别人通过互联网访问你的应用程序,你必须将它部署到WEB服务器同时将数据库部署到数据库服务器
本篇文章中将教你如何使用在将你的应用程序部署到云环境时的Entity Framework 6的非常有价值的两个特性:弹性连接(瞬时错误的自动重试)和命令拦截(捕获所有发送到数据库的SQL查询语句并记录至日志中)。

MVC5 Entity Framework学习(2):实现基本的CRUD功能

在上一篇文章中,我们使用Entity Framework 和SQL Server LocalDB创建了一个MVC应用程序,并使用它来存储和显示数据。在这篇文章中,你将对由 MVC框架自动创建的CRUD(create, read, update, delete)代码进行修改。
注意:通常我们在控制器和数据访问层之间创建一个抽象层来实现仓储模式,为了将注意力聚焦在如何使用实体框架上,这里暂没有使用仓储模式。