阅读本文大概需要 11 分钟. 原文:https://bit.ly/2UMiDLb 作者:Jon P Smith 翻译:王亮 声明:我翻译技术文章不是逐句翻译的,而是根据我自己的理解来表述的.其中可能会去除一些本人实在不知道如何组织但又不影响理解的句子. 本文将为你详细描绘 EF Core 从数据库中读取数据的"幕后"视图.我将揭开两种数据库读取方式的面纱:一个是普通的查询,另一个是使用 AsNoTracking 方法的非跟踪查询.我还将通过一个实验来演示我是如何解决我的一个客户遇到的…
阅读本文大概需要 14 分钟. 原文:https://bit.ly/2C67m1C 作者:Jon P Smith 翻译:王亮 声明:我翻译技术文章不是逐句翻译的,而是根据我自己的理解来表述的.其中可能会去除一些本人实在不知道如何组织但又不影响理解的句子. 这是深入理解 EF Core 系列的第二篇文章.第一篇是关于 EF Core 如何从数据库读取数据的:而这一篇是关于 EF Core 如何向数据库写入数据的.这是四种数据库操作 CRUD(新增.读取.更新和删除)中的 CUD 部分. 我假设你对…
原文:https://bit.ly/2Cy3J5f 作者:Jon P Smith 翻译:王亮 声明:我翻译技术文章不是逐句翻译的,而是根据我自己的理解来表述的.其中可能会去除一些本人实在不知道如何组织但又不影响理解的句子. 这篇文章是关于如何使用 EF Core 实现软删除的,即表面上删除了数据,但数据并没有被物理删除,在需要的时候你还是可以把它读取出来的.软删除有很多好处,但也有一些值得注意的问题.这篇文章会教你使用 EF Core 实现一般的软删除和复杂的级联软删除.在此过程中,我还会介绍如…
一. 支持字段 EF允许读取或写入字段而不是一个属性.在使用实体类时,用面向对象的封装来限制或增强应用程序代码对数据访问的语义时,这可能很有用.无法使用数据注释配置.除了约定,还可以使用Fluent API为属性配置支持字段. 1.1 约定 public class Blog { // _<camel-cased property name> private string _url; public int BlogId { get; set; } public string Url { get…
一.管理数据库架构概述 EF Core 提供两种主要方法来保持 EF Core 模型和数据库架构同步.一是以 EF Core 模型为基准,二是以数据库为基准. (1)如果希望以 EF Core 模型为准,请使用迁移. 对 EF Core 模型进行更改时,此方法会以增量方式将相应架构更改应用到数据库,以使数据库保持与 EF Core 模型兼容. (2)如果希望以数据库架构为准,请使用反向工程. 使用此方法,可通过将数据库架构反向工程到 EF Core 模型来生成相应的 DbContext 和实体…
0. 前言 在<C# 数据操作系列 - 5. EF Core 入门>篇中,我们简单的通过两个类演示了一下EF增删改查等功能.细心的小伙伴可能看了生成的DDL SQL 语句,在里面发现了些端倪.没看的小伙伴也不急,这就贴出来. public class ModelA { public int Id { get; set; } public string Name { get; set; } public List<ModelB> ModelBs { get; } = new List…
一.主键 键用作每个实体实例的主要唯一标识符. 使用关系数据库时,这会映射到主键的概念. 还可以配置不是主键的唯一标识符.按照约定,名为 Id 或 <type name>Id 的属性会配置为实体的键.例如下面二个示例: class Car { //映射到Car表 Id主键 public string Id { get; set; } } class Car { //映射到Car表CarId主键,约定格式:<type name>Id public string CarId { get…
一.开发环境: VS2015, .Net Core 1.0.0-preview2-003156 二.准备数据: CREATE DATABASE [Blogging]; GO USE [Blogging]; GO CREATE TABLE [Blog] ( [BlogId] int NOT NULL IDENTITY, [Url] nvarchar(max) NOT NULL, CONSTRAINT [PK_Blog] PRIMARY KEY ([BlogId]) ); GO CREATE TAB…