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

在EF Core 5中保存相关数据(多对多),而不获取实际记录

在EF Core 5中保存相关数据(多对多),而不获取实际记录,可以通过以下步骤实现:

  1. 定义实体类:首先,需要定义表示多对多关系的实体类。例如,如果有两个实体类A和B,它们之间存在多对多关系,可以创建一个中间实体类AB来表示这个关系。AB类通常包含A和B的外键属性。
  2. 配置关系:使用Fluent API或数据注解来配置多对多关系。在AB类的配置中,需要指定A和B的外键属性,并将它们与对应的实体类关联起来。
  3. 添加数据:在保存相关数据之前,需要创建A和B的实例,并将它们关联起来。可以通过创建AB实例并设置A和B的外键属性来实现关联。
  4. 保存数据:最后,使用EF Core的SaveChanges方法将相关数据保存到数据库中。EF Core会自动处理多对多关系的插入操作。

以下是一个示例代码,演示了如何在EF Core 5中保存相关数据(多对多):

代码语言:txt
复制
// 定义实体类
public class A
{
    public int Id { get; set; }
    public string Name { get; set; }
    public ICollection<AB> ABs { get; set; }
}

public class B
{
    public int Id { get; set; }
    public string Name { get; set; }
    public ICollection<AB> ABs { get; set; }
}

public class AB
{
    public int AId { get; set; }
    public A A { get; set; }
    public int BId { get; set; }
    public B B { get; set; }
}

// 配置关系
public class ABConfiguration : IEntityTypeConfiguration<AB>
{
    public void Configure(EntityTypeBuilder<AB> builder)
    {
        builder.HasKey(ab => new { ab.AId, ab.BId });

        builder.HasOne(ab => ab.A)
            .WithMany(a => a.ABs)
            .HasForeignKey(ab => ab.AId);

        builder.HasOne(ab => ab.B)
            .WithMany(b => b.ABs)
            .HasForeignKey(ab => ab.BId);
    }
}

// 添加数据
var a1 = new A { Name = "A1" };
var a2 = new A { Name = "A2" };
var b1 = new B { Name = "B1" };
var b2 = new B { Name = "B2" };

var ab1 = new AB { A = a1, B = b1 };
var ab2 = new AB { A = a2, B = b1 };
var ab3 = new AB { A = a2, B = b2 };

// 保存数据
using (var context = new YourDbContext())
{
    context.A.Add(a1);
    context.A.Add(a2);
    context.B.Add(b1);
    context.B.Add(b2);
    context.AB.Add(ab1);
    context.AB.Add(ab2);
    context.AB.Add(ab3);

    context.SaveChanges();
}

这是一个简单的示例,演示了如何在EF Core 5中保存相关数据(多对多)。根据实际需求,你可以根据这个示例进行修改和扩展。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

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

跨平台支持: EF Core 是 .NET Core 的一部分,因此可以多种操作系统上运行, EF 主要针对 Windows 平台。...ORM 的核心概念包括: 对象(Objects): 应用程序中表示业务实体。 关系(Relationships): 对象之间的交互和联系,例如一、一一或多关系。...每次你修改数据模型并保存这些变更时,EF Core 都会创建一个新的迁移。 迁移历史记录:迁移历史记录数据库中存储的迁移列表,它记录了应用于数据库的每个迁移。...4.2 事务管理 Entity Framework CoreEF Core)中,事务管理允许开发者一组相关数据库操作进行原子性处理,这意味着这些操作要么全部成功,要么全部回滚到最初的状态。...此外,EF Core 支持保存点(Savepoint),这是一种事务中创建一个可回滚的子事务点的机制。如果操作失败,你可以回滚到最近创建的保存点,不是回滚整个事务。

400

C# 数据操作系列 - 5. EF Core 入门

EF可以说是很好的诠释了这个理念。 EF可以不使用任何配置的前提下,自动解析类与表之间的映射(具体的映射逻辑与我们手写的ORM工具类一致或相近)。 自动跟踪更改。...直接使用通过EF获取的元素时,EF会自动跟踪哪些字段发生了变化,当手动调用保存的时候,EF就会把数据回传给数据库。...可以延迟加载需要的数据,外键引用属性、查询结果等 丰富的映射关系,支持一一,一,甚至继承、单表实例等 可以使用Linq 进行查询 非Core版的可以通过数据库表生成实体类,两种都可以通过实体类生成表...如果是使用的已有数据数据库,则不需要进行下面的步骤,否则建议执行以下步骤,以便可以由EF Core提供的工具生成数据库: NuGet的控制台界面,输入以下命令: Install-Package Microsoft.EntityFrameworkCore.Tools...这是EF Core保留的迁移记录,以便下次使用。 如果项目根目录里没有 blogging.db 这个SQLite文件的话,会自动创建该文件,同时设置好表;如果有,但不是SQLite的文件,则会报错。

2.3K10

一步步学习EF Core(3.EF Core2.0路线图)

但是实现下面这些功能之前,虽然EF Core对于许多应用场景来说是一个有效的选择(特别是.NET Core的平台上,因为EF6.x不起作用.....其中一部分已经预览1完成了 存储过程映射,允许EF使用存储过程来保存数据库的更改(FromSql已经提供了使用存储过程进行查询的良好支持)。...多关系没有连接实体。可以与连接实体建立多关系。 关系数据库的替代继承映射模式,例如每种类型的表(TPT)和每个具体类型TPC的表。...贪婪加载,允许查询实体时始终检索默认的相关数据集。 过滤加载,允许加载相关实体的一个子集。...从数据库更新模型(#831) - 允许您逐渐更新以前从数据库反向设计的模型,并更改了对数据库模式所做的更改。这允许您更新模型以匹配当前模式,不会丢失反向设计后手动模型进行的任何更改。

3K90

.net 温故知新:【10】.NET ORM框架EFCore使用入门之CodeFirs、DBFirst

从这篇ORM完成之后就将进入asp.net core的学习总结! EFCore Entity Framework Core (EF Core) 是适用于 .NET 的新式对象数据库映射器。...EF Core 通过数据库提供程序插件模型与 SQL Server/Azure SQL 数据库、SQLite、Azure Cosmos DB、MySQL、PostgreSQL 和更多数据库配合使用。...基于该比较,EF Core 检测变化,并添加适当的迁移不是再重新生成数据库。 最后运行命令Update-Database生成数据库和表,数据我们配置的程序路径下。...一多关系配置和获取,上面示例中学生有哪些课程就是一,查询关联要用includ。 多个外键字段的配置。 一多关系。...AsNoTracking使用,EFCore默认会跟踪实体,也就是保存在内存中,用于更新删除等操作。如果只是查询数据不用跟踪则使用AsNoTracking查询。 并发控制。 .....

2.5K30

盘点 .NET 比较流行的开源的ORM框架

前言 对于我们而言选择ORM框架的目的,其实都是为了让我们的程序更好的操作数据库,提高开发编程效率和程序的维护拓展性。 所以我们选择ORM需要从项目实际业务出发,选择最合适自己团队的框架。...支持一的导航属性 支持MySql、SqlServer、Sqlite、Oracle、postgresql、QuestDb、ClickHouse、达梦、人大金仓、神通数据库、瀚高、MsAccess...EF提供变更跟踪、唯一性约束、惰性加载、查询事物等。 开发人员使用Linq语言,对数据库操作如同操作object对象一样省事。 EF有三种使用场景: 1、从数据库生成Class。...架构上,它比 Dapper、Massive 或 PetaPoco 等微 ORM 高出一步,因为您使用 LINQ 表达式不是魔术字符串,同时代码和数据库之间维护一个薄抽象层。...插入/删除/更新/保存和 IsNew 的辅助方法 分页请求会自动计算出总记录数并获取特定页面。 简单的交易支持。 更好的参数替换支持,包括从对象属性中获取命名参数。

3.9K41

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

前言 《C# 数据操作系列 - 5. EF Core 入门》篇中,我们简单的通过两个类演示了一下EF增删改查等功能。细心的小伙伴可能看了生成的DDL SQL 语句,在里面发现了些端倪。...如果类型不一致,EF则认为该类设置有误。如果没找到符合名称要求的属性,EF会自己添加一个外键属性。 对于一一,EF要求导航属性双方都应该具有外键配置。 一EF要求的一方设置外键。...同时如果在一方这边设置了集合类型的导航属性,那么EF会自动到目标类里寻找外键属性。 说完了一一和一,那么呢? 如果没有声明的话, EF会生成一个中间表。 2....var property = builder.Property(t => t.Name); 获取一个与属性Name相关联的PropertyBuilder实例,通过这个实例可以配置属性与数据库列的关系。...总结 在这一篇领着大家看了一下EF Core对于映射关系这一部分的内容,我留下了外键相关的FluentAPI介绍,我打算在下一篇介绍。因为这部分的内容比较麻烦,而且使用率也相当高。

2.6K21

C# 数据操作系列 - 7. EF Core 导航属性配置

在上一篇,大概介绍了Entity Framework Core关于关系映射的逻辑。在上一篇中留下了EF的外键映射没有说,也就是一一,一一,的关系等。...实体之间的关系 从数据表来考虑,两个表之前的关系有一一,一一)和的关系。 其中一一,指的是表A有一条记录对应着表B最多有一条记录与之对应。...反过来也一样,表A也最多有一条记录与表B的某一条记录对应。具体在数据表上表现为,A表和B表各有一个外键指向对方。 一一是一个概念,只是参考的方向是相反的。...其他数据库提示,外键不能为空。 所以也就是说EF推荐这种双方互导航的一一关系。... 的时候,需要先明白一个概念。,对于导航两端来说,是无法自己身上找到对应的标记的。也就是说,各自的数据表不会出现指向对方的外键。那么,如何实现呢?

3K20

C# 数据操作系列 - 8. EF Core的增删改查

初始化 实际开发中,一般都是先设计好数据表再进行开发,所以很少用到EF Core数据迁移功能。所以EF Core的初始化,一般也指的是EF Core上下文初始化。...因为实际开发中,一个完整的程序或者网站实体类都会大于10,而这些如果使用属性的形式会非常,不利于实际开发。而且,EF Core可以通过 Assembly 方式整体加载配置文件。...咳咳,总而言之,使用配置文件利大于弊,所以我推荐使用配置文件关系进行配置。 2. 数据变化 换句话说,嗯,也就是增删改。在数据增删这两方面,EF Core没有太多需要注意的地方。...也就是说,如果你从EF Core的上下文获取了一个实体对象,这个对象的某些值进行了修改。这时候EF Core其实已经记录了这个对象的修改。...count条记录,Take(int count)取得数据集的前count条记录

3K20

Entity Framework Core 2.0 入门

该文分以下几点: 创建Model和数据库 使用Model与数据库交互 查询和保存关联数据 EF Core支持情况 EF Core数据库Providers: 此外还即将支持CosmosDB和 Oracle...这里, 常规的做法是, 针对开发时的数据库, 可以通过命令直接创建和更新数据库. 针对生产环境, 最好是生成sql脚本, 然后由相关人员去执行这个脚本来完成数据库的创建或者更新....老版本到ef里, migration历史表里面还保存着当时到迁移的快照, 创建迁移的时候还需要与数据库打交道. 这就是我上面提到的如果团队使用ef和源码管理的话, 就会遇到这个非常令人头疼的问题..../LearnEf.Data 然后这两个迁移文件就删掉了: 多关系和一一关系: 这部分的官方文档在这: https://docs.microsoft.com/en-us/ef/core/modeling...这时, 因为该数据是被context追踪的, 所以只需它的导航属性添加新记录, 然后保存即可. 3.离线数据添加导航属性. 这时候就必须使用外键了. 预加载关联数据 Eager Loading.

3.1K80

Entity Framework Core 2.0 入门

该文分以下几点: 创建Model和数据库 使用Model与数据库交互 查询和保存关联数据 EF Core支持情况 EF Core数据库Providers: 此外还即将支持CosmosDB和 Oracle...这里, 常规的做法是, 针对开发时的数据库, 可以通过命令直接创建和更新数据库. 针对生产环境, 最好是生成sql脚本, 然后由相关人员去执行这个脚本来完成数据库的创建或者更新....老版本到ef里, migration历史表里面还保存着当时到迁移的快照, 创建迁移的时候还需要与数据库打交道. 这就是我上面提到的如果团队使用ef和源码管理的话, 就会遇到这个非常令人头疼的问题..../LearnEf.Data 然后这两个迁移文件就删掉了: 多关系和一一关系: 这部分的官方文档在这: https://docs.microsoft.com/en-us/ef/core/modeling...这时, 因为该数据是被context追踪的, 所以只需它的导航属性添加新记录, 然后保存即可. 3.离线数据添加导航属性. 这时候就必须使用外键了. 预加载关联数据 Eager Loading.

3.5K140

01-EF Core笔记之创建模型

数据标注方式比较简单,类或字段上添加特性标注即可,实体类型有一定的入侵。...原理大致是数据库中每行数据包含一个并发令牌字段,改行数据的更新都会出发令牌的改变,发生并行更新时,系统会判断令牌是否匹配,如果匹配则认为数据已发生变更,此时会抛出异常,造成更新失败。...在数据库中,数据表之间的关系可以分为一一、一三种,实体之间同样有这三种关系,但是EF Core仅支持一一、一多关系,如果要实现多关系,则需要通过关系实体进行关联。...CreateTime的值,并自动保存数据库,但是值仅在Context中生成,无法保存数据库中。...):基类和子类不在同一个表中,子类中包含基类的所有字段,目前EF Core不支持该模式 EF Core仅支持TPH模式,基类和子类数据将存储同一个表中。

3K20

EF Core如何处理多关系

目录 一、解决 二、增 三、查 四、删 EF Core处理多关系时并不像一一和一多关系那样好处理,下面我们利用一个简单的电子商城购物车来讲解一下吧。...ShoppingCart没有主键,由于多关系因此ShoppingCart应该是复合主键。复合主键由两列组成一个主键,EF Core中创建复合键唯一办法是OnModelCreating中创建。...Core处理的问题。...解决了创建表的问题,下面我们就来看一下如何进行增删查。 二、增 我们要把商品添加到购物车中,我们需要创建ShoppingCartCommodity并保存它。...ShoppingCart= cart, Commodity= item }; db.Add(shoppingCartCommodity2); db.SaveChanges(); 三、查 从数据库中获取数据只需使用

2K30

IdentityServer4 3.1.x 迁移到 4.x

一.前言 IdentityServer4 4.x已经正式发布了,根据官方的 Release Note,3.1.x 到 4.x 的变更也是非常,今天将代码迁移到 4.x 遇到了一些问题在此记录下来,我使用的...IdentityServer4 的各种数据持久化,比如 ClientStore,ResourceStore 等,都是完全自定义的,非 EntityFramework,如果你是使用的 EF 那么官方提供了迁移脚本...Resource 相关变化 ApiResource 的 Scope 正式独立出来为 ApiScope 对象,开发者可能是想让用户明白 ApiResource 和 Scope 的关系,不是把它们混为一谈...属性被删除 IdentityServerOptions 对象中 PublicOrigin 属性没有了,此属性涉及到在生产环境经过nginx反向代理等设施后 configuration endpoint 获取到的地址的准确性...3.1.x 到 4.x 确实许多 break changes,但从遇到的几个实际问题来说,开发人员设计是已尽量兼容了老版本,希望我所遇到的问题,能帮到大家。

56341

EntityFramework Core 学习扫盲

Blog实体包含Post实体的引用,独立的AuditEntry则可以OnModelCreating方法中进行配置。...主键 默认情况下,EF CORE会将实体中命名为Id或者[TypeName]Id的属性映射为数据库表中的主键。当然有些开发者不喜欢将主键命名为Id,EF CORE也提供了两种方式进行主键的相关设置。...计算列 计算列指的是列的数据数据库计算生成,EF CORE层面,我们只需要定义计算规则即可。目前EF CORE 1.1 版本中,暂不支持使用Data Annotations方式定义。...默认值更多指的是当用户手动输入时,使用默认值进行数据库相应列的填充。以下代码表示假如操作中指定Rating的值,那么数据库将默认填充3。...那么EF CORE中,我们怎么实现这些关系呢? 以下内容用代码的方式给出了一一,一的关系,两边关系设为不可空。

9.5K90

Entity Framework Core 简介

零、EF Core 开发方法 EF Core 只支持两种开发方式 Code First 和 Database First, EF Core 2.0 开始不支持数据库模型的可视化设计器以及数据库设计导航... Code First 方法中, EF Core API 使用基于 domain classes 中提供的约定和配置的迁移来创建数据库和表,这种方法 DDD 中很有用。...如果你习惯于 Database First ,那么你可以使用 EF Core 命令基于现有的数据库创建 domain classes 和上下文类,但是这种方法支持有限,因为 EF Core 2+ 版本...变更跟踪 ; 保存更改 ; 迁移 。...; TPC ; 多关系 ; Entity Splitting ; Spatial Data ; 延迟加载 ; 使用DbContext进行存储过程映射以进行CUD操作 ; 种子数据 ; 自动迁移 。

1.9K10

2022年了有哪些值得推荐的.NET ORM框架?

EF/EF Core Entity Framework (EF) Core 是轻量化、可扩展、开源和跨平台版的常用 Entity Framework 数据访问技术,EF Core 是适用于 .NET 的现代对象数据库映射器...官方文档教程:https://docs.microsoft.com/zh-cn/ef/ GitHub地址:https://github.com/dotnet/efcore 以下是EF/EF Core相关拓展程序包...PgSql 的数组类型等; 支持 丰富的表达式函数,以及灵活的自定义解析; 支持 导航属性一贪婪加载,以及延时加载; 支持 读写分离、分表分库、过滤器、乐观锁、悲观锁; 支持 MySql/...架构上,它比 Dapper、Massive 或 PetaPoco 等微 ORM 高出一步,因为您使用 LINQ 表达式,不是魔术字符串,同时代码和数据库之间维护一个薄抽象层。...与您的数据模型一起工作,不会强迫您更改您的类。(包含一个小的反射驱动 ORM 层。)

5.7K11
领券