一.   反向工程 反向工程是基于数据库架构,生成的实体类和DbContext类代码的过程,对于Visual Studio开发,建议使用PMC.对于其他开发环境,请选择.NET Core CLI工具(跨平台). (1) 在程序包管理器控制台(PMC)工具中使用命令Scaffold-DbContext 来进行反向工程. (2) 在.NET 命令行接口 (CLI) 工具中使用dotnet ef dbcontext scaffold命令来进行反向工程. 1.1 Scaffold-DbContext介绍…
一.管理数据库架构概述 EF Core 提供两种主要方法来保持 EF Core 模型和数据库架构同步.一是以 EF Core 模型为基准,二是以数据库为基准. (1)如果希望以 EF Core 模型为准,请使用迁移. 对 EF Core 模型进行更改时,此方法会以增量方式将相应架构更改应用到数据库,以使数据库保持与 EF Core 模型兼容.  (2)如果希望以数据库架构为准,请使用反向工程. 使用此方法,可通过将数据库架构反向工程到 EF Core 模型来生成相应的 DbContext 和实体…
一.概述 在上篇中使用EF基于数据模型创建数据库,  本篇继续使用 EF  基于数据库创建数据模型.  实现对已有数据库进行反向工程,来构建数据访问的 ASP.NET Core MVC 应用程序.已有数据库使用上篇的EFGetStarted.AspNetCore.NewDb库.这里还是使用Visual Studio 2017和sql server 2012来演示. 1.1 创建新项目 打开 Visual Studio 2017 “文件”>“新建”>“项目...” 从左菜单中选择“已安装”>…
一.连接字符串 在上二篇中,ASP.NET Core 应用程序连接字符串是写死在ConfigureServices代码中,下面介绍通过配置来实现.连接字符串可以存储在 appsettings.json.用户机密存储.其他配置源中. 下面示例演示appsettings.json 中存储的连接字符串,这样不管asp.net core在什么环境(Development.Staging .Production)都能调用该文件. "ConnectionStrings": { "Blog…
一.概述 本章使用 Entity Framework Core 构建执行基本数据访问的 ASP.NET Core MVC 应用程序.使用迁移(migrations)基于数据模型创建数据库,是一种code first模式.可以在Windows 上使用 Visual Studio 2017,或在 Windows.macOS 或 Linux 上使用 .NET Core CLI 来学习.已经安装了NET Core 2.1 SDK,这里使用Visual Studio 2017和sql server 201…
一.查询类型 此功能是EF Core 2.1中的新功能. EF Core除了实体类型之外,EF Core模型还可以包含查询类型,这些查询类型是针对“未映射到实体类型”的数据获取.比如视图,或只读数据表. 1.1 下面介绍下,查询类型与实体类型共同与不同点: (1) 可以在OnModelCreating中或通过派生DbContext上的“set”属性添加到EF Core模型中. (2) 支持许多相同的映射功能,在关系数据库上,如继承映射和导航属性.也可以配置目标数据库对象和列通过 fluent A…
一. 支持字段 EF允许读取或写入字段而不是一个属性.在使用实体类时,用面向对象的封装来限制或增强应用程序代码对数据访问的语义时,这可能很有用.无法使用数据注释配置.除了约定,还可以使用Fluent API为属性配置支持字段. 1.1 约定 public class Blog { // _<camel-cased property name> private string _url; public int BlogId { get; set; } public string Url { get…
一.事务 (1) 事务接着上篇继续讲完.如果使用了多种数据访问技术,来访问关系型数据库,则可能希望在这些不同技术所执行的操作之间共享事务.下面示例显示了如何在同一事务中执行 ADO.NET SqlClient 操作和 Entity Framework Core 操作. using (var connection = new SqlConnection(connectionString)) { //使用ado.net 打开数据库连接 connection.Open(); //使用ado.net 开…
一. 基本数据 每个EF上下文实例都有一个 ChangeTracker(更改跟踪器),它负责跟踪需要写入数据库的更改. 当更改实体类的实例时(修改属性,删除实例,新建实例等),这些更改会记录在 ChangeTracker 中,然后在调用 SaveChanges 时被写入数据库. 此数据库提供程序负责将更改,转换为特定的数据库操作(例如,关系数据库的 INSERT.UPDATE 和 DELETE 命令). 1.1 添加数据 使用 DbSet.Add 方法添加实体类的新实例. 调用 SaveChan…
一. 原生SQL查询 接着上篇讲.通过 Entity Framework Core 可以在使用关系数据库时下降到原始 SQL 查询. 在无法使用 LINQ 表达要执行的查询时,或因使用 LINQ 查询而导致低效的 SQL 查询时非常有用. 原始 SQL 查询可返回实体类型,或者从 EF Core 2.1 开始,可返回模型中的查询类型. 1.1 基本的原始SQL查询 可以使用FromSql扩展方法,基于原始的SQL查询,开始LINQ查询. var blogs = context.Blogs .Fr…