首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

EF Core的增删改查

0.前言 到目前为止,我们看了一下如何声明EF Core的初步使用,也整体的看了下EF Core的映射关系配置以及导航属性的配置。 这一篇,我带大家分享一下,我在工作中需要的EF Core的用法。...当然了,如果有小伙伴有更好的方法也可以分享出来呀。 1.2 配置文件的加载或者实体对象的托管 如果我们不使用配置文件的话,就必须在EF Core的上下文类里添加一个类型是DbSet的属性。...EF Core 导航属性配置》中介绍的配置类)的话,需要在EF Core中应用配置,具体是: protected override void OnModelCreating(ModelBuilder modelBuilder...不过如果有导航属性的话,在新增的时候,EF Core会自动检索导航属性的另一端是否需要新增到数据库中,如果需要新增的话,EF Core会自动标记为新增的。...也就是说,如果你从EF Core的上下文获取了一个实体对象,对这个对象的某些值进行了修改。这时候EF Core其实已经记录了这个对象的修改。

3.2K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    EF Core 导航属性配置

    意思就是无法定义一对一关系中的子/从属方 如何解决呢?之前在说的时候,EF会根据导航属性自动生成一个外键,但是这一条在一对一这里就有点不太起作用了。...EF Core中取消了在映射关系中配置中间表的功能,所以在EF Core中需要一个中间表: public class ManyToManyModelA { public int Id { get...在EF 6中 中间表可以仅存在于关系中,但是在EF Core3 还没有这个的支持。也就是当前文章使用的版本。 5. 附加 在EF的外键约束中,导航属性是默认可空的。...如果要求非空,也就是导航属性的另一端必须存在则需要在配置关系的时候添加: IsRequired() 这个方法也用来声明字段是必须的。这个验证是在EF 调用 SaveChanges 的时候校验的。...未完待续 照例的未完待续,下一篇将为大家介绍一下EF Core 在开发中的用法。

    3.3K20

    asp.net core之EfCore

    EF Core(Entity Framework Core)是一个轻量级、跨平台的对象关系映射(ORM)框架,用于在.NET应用程序中访问和操作数据库。...EF Core提供了一种简单、灵活和高效的方式来与各种数据库进行交互,它通过将数据库表映射为.NET对象,并提供了一组强大的查询语言和操作API,使开发人员能够以面向对象的方式进行数据库操作。...本文是一个简单的EF Core教程,演示了如何使用EF Core进行数据库操作。 1. 安装EF Core 首先,创建一个WebApi项目,我们需要安装EF Core。...该类包含了Id、Name和Price属性,分别对应数据库表中的列。 3. 创建数据库上下文 接下来,我们需要创建一个派生自DbContext的数据库上下文类,用于定义数据库的连接和数据集。...无论是创建新的数据库还是与现有数据库进行交互,EF Core都是一个强大的选择。希望这个教程对你有所帮助!

    98230

    张高兴的 Entity Framework Core 即学即用:(一)创建第一个 EF Core 应用

    写在前面 Entity Framework Core (EF Core) 是 .NET 平台流行的对象关系映射(ORM)框架。...手动创建实体类 下面将手动编写两个实体类 Hospital.cs 和 Doctor.cs,以熟悉 EF Core Attribute 是如何将数据库表和实体类之间建立联系的。...实体属性 每一个实体类都有一组属性,EF Core 会将实体属性映射到数据库表中的列。 表的映射 对数据库表进行映射,使用 Table() Attribute。...设置好实体类之间的导航属性后,可以通过导航属性轻松的查询到关联实体的数据。...在设置导航属性之前,首先需要理清楚医院和医生存在着怎样的数量关系,医生是医院的附属,一家医院下面会有多名医生,因此医院和医生之间是一对多的关系。为了方便理解,下面只保留主键、外键和导航属性。

    2.5K10

    .NET ORM核心功能之导航属性- EFCore和 SqlSugar

    导航属性 导航属性是作为.NET ORM核心功能中的核心,在SqlSugar没有支持导航属性前,都说只是一个高级DbHelper, 经过3年的SqlSugar重构已经拥有了一套 非常成熟的导航属性体系...,本文不是重点讲SqlSugar而是重点讲导航属性的作用,让更多写Sql人还未使用ORM的人了解到ORM的作用。....Include(z1 => z1.Education) .Include(z1 => z1.WorkExperience).ToList() EF Core导航属性配置 EF多对多 public class...原码下载: https://github.com/DotNetNext/SqlSugar 总结: .NET中无论是EF CORE还是SQLSUGAR 使用了导航属性都不再需要费心写繁琐的SQL语句,只需简单地调用导航属性...让我们一起追随这份感动,选择使用导航属性,让编程的旅途更加愉悦,让代码的世界充满美好与便捷!

    59240

    基于ABP落地领域驱动设计-02.聚合和聚合根的最佳实践和原则

    所以,只有当应用程序代码中的相关对象可用时,即获取到聚合及其所有子集合数据时,我们才能执行该业务规则。 另一方面,MongoDB开发者会发现这个规则非常自然。...对于 MongoDB 来说这个操作开箱即用,但是使用 EF Core 需要配置聚合与数据库映射,配置后 EF Core 仓储实现 会自动处理。...然而,它是领域驱动设计的一个重要实践。 聚合和聚合根最佳实践 以下最佳实践确保实现上述原则。 只通过ID引用其他聚合 一个聚合应该只通过其他聚合的ID引用聚合,这意味着你不能添加导航属性到其他聚合。...用于 EF Core 和 关系型数据库 在 MongoDB 中,自然不适合有这样的导航属性/集合。...然而,EF Core 和关系型数据库的开发者可能会发现这个限制性的规则是不必要的,因为 EF Core 可以在数据库的读写中处理它。

    3.1K30

    01-EF Core笔记之创建模型

    使用EF Core的第一步是创建数据模型,模型建的好,下班走的早。EF Core本身已经设置了一系列约定来帮我们快速的创建模型,例如表名、主键字段等,毕竟约定大于配置嘛。...默认情况下,如果你的类型中包含一个字段,那么EF Core都会将它映射到数据库中,导航属性亦是如此。...() .Property("LastUpdated"); 阴影属性 阴影属性指的是在实体中未定义的属性,而在EF Core中模型中为该实体类型定义的属性,这些类型只能通过变更跟踪器进行维护...继承 关于继承关系如何在数据库中呈现,目前有三种常见的模式: TPH(table-per-hierarchy):一张表存放基类和子类的所有列,使用discriminator列区分类型,目前EF Core...实体构造函数 EF Core支持实体具有有参的构造函数,默认情况下,EF Core使用无参构造函数来实例化实体对象,如果发现实体类型具有有参的构造函数,则优先使用有参的构造函数。

    3.1K20

    Entity Framework Core 2.0 新特性

    此特性允许使用Linq查询表达式直接定义在实体类型的元数据模型上。这样的过滤器会自动应用到任何LINQ查询所涉及的那些实体类型,包括间接引用的实体类型(对象引用,导航属性)。...局限性: 过滤器只能在层次结构的根实体类型上定义 过滤器不允许使用导航属性进行过滤(可以根据反馈添加此功能。)...在 ef core 2.0 中,我们将自定义的DbContext类型注册到DbContextPool服务中,可让该数据库上下文类型的实例重复使用。...但是由于它不能被CLR类型识别,所以必须从另一个实体类型导航到它。包含定义导航的实体是所有者。当查询所有者时,默认将包含所属的类型。   ...,在EF Core2.0中,这个特性回来了(EF Core 之前的 core版本不支持)。

    1.9K50

    C# 数据操作系列 - 6 EF Core 配置映射关系

    EF Core 入门》篇中,我们简单的通过两个类演示了一下EF增删改查等功能。细心的小伙伴可能看了生成的DDL SQL 语句,在里面发现了些端倪。没看的小伙伴也不急,这就贴出来。...对于主键,默认情况下EF会检索实体类有没有名为Id或者类名+Id的属性,如果有EF则认为这个属性是主键,否则会认为该类没有设置主键。EF检索到主键的类型是数字类型的话,会自动添加自增长的约束。...对于其他属性,EF会自动按照同名的形式映射到数据表中。 对于外键,如果在类里添加了引用类型,而这个引用类型也在EF的上下文中,EF会把这种属性称为导航属性。...EF一旦在类里检索到了导航属性,就会去寻找对应的外键。EF会认为 属性名+Id或者类名+Id 可能是外键属性,如果找到名称一致且类型与导航属性目标类的主键类型一致,则认为是外键。...如果类型不一致,EF则认为该类设置有误。如果没找到符合名称要求的属性,EF会自己添加一个外键属性。 对于一对一,EF要求导航属性双方都应该具有外键配置。 一对多,EF要求多的一方设置外键。

    2.8K21

    Entity Framework Core 2.0 入门

    SQL语句不可以包含关联的导航属性, 但是可以配合Include使用以达到该效果(https://docs.microsoft.com/en-us/ef/core/querying/raw-sql#including-related-data...插入关联数据有几种情况: 1.直接把要添加的Model的导航属性附上值就可以了, 这里的Department不需要写外键....看一下Sql: 这个过程一共分两步: 1 插入主表, 2,使用刚插入主表数据的Id, 插入子表数据. 2.为数据库中的数据添加导航属性....这时, 因为该数据是被context追踪的, 所以只需在它的导航属性添加新记录, 然后保存即可. 3.离线数据添加导航属性. 这时候就必须使用外键了. 预加载关联数据 Eager Loading....也就是查询的时候一次性把数据和其导航属性的数据一同查询出来. 看看SQL: 这个过程是分两步实现的, 首先查询了主表, 然后再查询的子表. 这样做的好处就是性能提升.

    3.2K80

    Entity Framework Core 2.0 入门

    SQL语句不可以包含关联的导航属性, 但是可以配合Include使用以达到该效果(https://docs.microsoft.com/en-us/ef/core/querying/raw-sql#including-related-data...插入关联数据有几种情况: 1.直接把要添加的Model的导航属性附上值就可以了, 这里的Department不需要写外键....看一下Sql: 这个过程一共分两步: 1 插入主表, 2,使用刚插入主表数据的Id, 插入子表数据. 2.为数据库中的数据添加导航属性....这时, 因为该数据是被context追踪的, 所以只需在它的导航属性添加新记录, 然后保存即可. 3.离线数据添加导航属性. 这时候就必须使用外键了. 预加载关联数据 Eager Loading....也就是查询的时候一次性把数据和其导航属性的数据一同查询出来. 看看SQL: 这个过程是分两步实现的, 首先查询了主表, 然后再查询的子表. 这样做的好处就是性能提升.

    3.5K140

    【ASP.NET Core 基础知识】--数据库连接--使用Entity Framework Core进行数据库访问

    ORM 映射器(Mapper): 负责将对象映射到数据库中的表,以及将对象的属性映射到表的列。 ORM 框架的主要优点包括: 提高了开发效率,因为开发者可以用熟悉的面向对象的方式来操作数据库。...以下是一个简单的示例,演示了如何使用EF Core连接到数据库: 首先,确保已经安装了适当的数据库提供程序包。...延迟加载(Lazy Loading):默认情况下,EF Core 不会自动加载实体之间的导航属性。开启延迟加载功能可以提高性能,但可能会导致额外的数据库查询。...以下是一个简单的示例,演示了如何在 EF Core 中进行跨数据库操作: 安装相应数据库提供程序的 NuGet 包。...文章首先介绍了EF Core的的基本概念,然后讲解了EF Core连接数据库,如何在多数据库环境下使用EF Core,以及需要注意的性能和兼容性问题。

    62300

    EF Core中避免贫血模型的三种行之有效的方法

    本篇文章将先探讨贫血模型的问题,再去探究在EF Core中使用Code First时如何使用简单的方法来避免贫血模型。...int Id { get; private set; } ... } 这样,所有属性在类之外都是只读的。...在EF6中,我们只需用[ComplexType]属性修饰值对象: [ComplexType] public class Money { ... } 在EF Core中,从版本2开始,我们可以使用...丰富的领域模型不需要调用代码来验证领域模型,并提供了一个定义良好的抽象来进行编程。一个值对象进行自我验证,因此包含值对象属性的领域模型本身不需要知道如何验证值类型。所有非常清晰和简单。 4....清除公共属性setter确保我们的模型在其整个生命周期内保持有效状态。在领域模型上内部执行验证和引入更改状态的方法使我们能够集中业务逻辑并简化调用代码。

    1.4K40

    .NET Core开发实战(第29课:定义仓储:使用EF Core实现仓储层)--学习笔记

    29 | 定义仓储:使用EF Core实现仓储层 首先定义仓储层的接口,以及仓储层实现的基类,抽象类 仓储层的接口 namespace GeekTime.Infrastructure.Core {.../// /// 包含普通实体的仓储 /// 约束 TEntity 必须是继承 Entity 的基类,必须实现聚合根 IAggregateRoot /// 也就是说仓储里面存储的对象必须是一个聚合根对象...HasMaxLength(20); //builder.Property(p => p.UserName).HasMaxLength(30); // 定义导航属性...HasMaxLength(20);// 修改字段长度 builder.Property(p => p.UserName).HasMaxLength(30); // 定义导航属性...,可以复用之前定义的代码,快速实现仓储层的定义 可以通过代码提升看到仓储层是有 Add,Update,Remove,Delete 方法,还有 UnitOfWork 的属性 ?

    2.4K11
    领券