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

EF Core 2对象未附加到上下文

EF Core 2是Entity Framework Core的一个版本,它是一个开源的对象关系映射(ORM)框架,用于在.NET应用程序中进行数据访问。它提供了一种简单且强大的方式来处理数据库操作,包括数据模型的定义、查询和持久化。

对象未附加到上下文是指在使用EF Core 2进行数据操作时,尝试对一个未附加(Detached)的实体对象进行操作,而该对象并没有被EF Core 2上下文(DbContext)跟踪。上下文跟踪是EF Core 2中的一个重要概念,它负责跟踪实体对象的状态和变化,并将这些变化同步到数据库。

当我们从数据库中查询实体对象时,EF Core 2会将这些对象附加到上下文中进行跟踪。但是,如果我们手动创建了一个实体对象,并且没有将其附加到上下文中,那么在尝试对该对象进行操作时就会出现对象未附加到上下文的错误。

为了解决这个问题,我们可以使用以下方法之一:

  1. 使用上下文的Attach方法将对象附加到上下文中:
代码语言:txt
复制
var context = new YourDbContext();
var entity = new YourEntity { Id = 1, Name = "Example" };
context.Attach(entity);

这样,EF Core 2就会开始跟踪该对象,并且可以对其进行操作。

  1. 使用上下文的Update方法将对象附加到上下文中并标记为已修改:
代码语言:txt
复制
var context = new YourDbContext();
var entity = new YourEntity { Id = 1, Name = "Example" };
context.Update(entity);

这样,EF Core 2会将对象附加到上下文中并将其状态标记为已修改,这样在保存更改时,EF Core 2会将这些更改同步到数据库。

需要注意的是,如果我们从数据库中查询到的实体对象已经附加到上下文中,那么在对其进行操作时就不会出现对象未附加到上下文的错误。

推荐的腾讯云相关产品:腾讯云数据库(TencentDB)

腾讯云数据库是腾讯云提供的一种高性能、可扩展的云数据库解决方案。它支持多种数据库引擎,包括MySQL、SQL Server、PostgreSQL等,可以满足不同应用场景的需求。

产品介绍链接地址:腾讯云数据库

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

相关·内容

2对象激活上下文-对象激活

对象激活主要包括 构造字符串 及时激活 对象池 私有组件 1.构造字符串 服务器苏建只能使用默认的构造函数,这样在对象创建的时候你就不能通过构造函数初始化数据...通过[ConstructionEnabled]特性和其Default属性把默认的构造字符串添加到配置元数据中.在类内部你必须重写基类SericedComponent的Construct方法.当每次创建对象时...,这种方法会被COM+基础结构调用. 2.即时激活(Just-in-Time Activation JITA) JITA是一个用于减少服务器负载的特性.对于打开lJITA支持的组件,他的生命周期和他使用的客户端应用程序无关....这个服务器组件自己通过设置完成位来决定对象什么时候应该被终止.如果客户应用程序通过客户端的同一个引用来调用一个对象的方法,而这个对象在服务器端已经被终止的话,一个新的对象会被自动创建并激活....string title, DateTime startDate, string attendee)         {             writer.WriteLine("{0};{1};{2}

49290

一步步学习EF Core(2.事务与日志)

前言 上节我们留了一个问题,为什么EF Core中,我们加载班级,数据并不会出来 其实答案很简单,~ 因为在EF Core1.1.2 中我们在EF6.0+中用到的的延迟加载功能并没有被加入,不过在EF...下面我们开始今天的内容 事务 关于EF Core的事务,其实与EF 6.x几乎一样,代码如下: using (var tran = _context.Database.BeginTransaction...下面我们来讲一下关于EF Core中的日志 日志 我们知道,在ASP.NET Core中,大量的使用了IOC的手法来注入我们所需要的类. EF Core其实也一样,....CreateLogger(string categoryName) { // NOTE: 这里要注意,这是 EF Core 1.1的使用方式,如果你用的 EF...在非Asp.NET core的程序中,我们需要把日志提供器从上下文里注入如下: protected override void OnConfiguring(DbContextOptionsBuilder

1.5K90
  • Asp.Net Core 轻松学-使用MariaDBMySqlPostgreSQL和支持多个上下文对象

    EFCore 连接 MSSQL 的使用方法,在本章中,将继续介绍如何利用 EFCore 连接到 MariaDB/MySql 和 PostgreSQL 数据库,同时,在一个项目中,如何添加多个数据库上下文对象...,并在业务中使用多个上下文对象,通过这两章的学习,你将掌握使用 EFCore 连接 MSSQL/MariaDB/MySql/PostgreSQL 的能力。...闲话说完,进入今天的正题,连接第三方数据库和支持多个上下文对象。 1. 使用 MariaDB/MySql 数据库 MariaDB基于MySQL并遵循GPL v2授权使用的。...,只是声明了一个 MySqlForumContext 对象,然后继承自 DbContext ,并将 Topic 和 Post 实体对象映射到该上下文中,这个使用方式和之前的文章中连接 MSSQL 数据库的使用方式是完全一致的...,在创建 Migrations 的时候, EF 会自动查找匹配的 Context ,但是,由于使用了多个 Context,在执行命令时,必须指定 -Context NpgSqlForumContext,

    2.3K51

    asp.net core之EfCore

    EF Core(Entity Framework Core)是一个轻量级、跨平台的对象关系映射(ORM)框架,用于在.NET应用程序中访问和操作数据库。...EF Core提供了一种简单、灵活和高效的方式来与各种数据库进行交互,它通过将数据库表映射为.NET对象,并提供了一组强大的查询语言和操作API,使开发人员能够以面向对象的方式进行数据库操作。...可以通过NuGet包管理器或使用dotnet命令行工具来安装EF Core。 dotnet add package Microsoft.EntityFrameworkCore 2....,并将其添加到数据库中。...总结 EF Core是一个功能强大且易于使用的ORM框架,它提供了一种简单的方式来进行数据库操作。通过定义模型类和数据库上下文,以及使用提供的API,开发人员可以轻松地进行各种数据库操作。

    90630

    DDD实战进阶第一波(五):开发一般业务的大健康行业直销系统(实现产品上下文领域层)

    Product.Domain除了要实现领域逻辑之外,还要定义ProductSPU的仓储接口、通过EF Core定义产品上下文与数据库上下文之间的映射关系。...产品上下文与数据库上下文映射关系: 1.因为映射关系使用EF Core实现,未来可能被替换掉,所以先定义一个产品上下文接口: public interface IProductContext {...} 2.EF Core映射实现 public class ProductEFCoreContext:DbContext,IProductContext { public...Core工具生成数据库脚本并更新数据库,在生成脚本时,需要编辑项目文件,并采用EF Core Tools命令生成,这里就不细讲EF Core技术方面的内容。...到这里,我们就基本实现了产品上下文的领域层,可以看到领域层主要是领域逻辑,定义了一个仓储接口,将数据库技术解耦,当然要定义领域对象与数据库之间的映射关系,否则用例无法完成真正 对领域对象的持久化。

    1.1K50

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

    EF/EF Core Entity Framework (EF) Core 是轻量化、可扩展、开源和跨平台版的常用 Entity Framework 数据访问技术,EF Core 是适用于 .NET 的现代对象数据库映射器...EF Core 可用作对象关系映射程序 (O/RM),这可以实现以下两点: 使 .NET 开发人员能够使用 .NET 对象处理数据库。 无需再像通常那样编写大部分数据访问代码。...官方文档教程:https://docs.microsoft.com/zh-cn/ef/ GitHub地址:https://github.com/dotnet/efcore 以下是EF/EF Core相关拓展程序包...与Massive一样,它以单个文件的形式提供,您可以轻松地将其添加到任何项目或编译(仅限 V5)。...内存高效- 它提取并缓存您的对象属性、执行上下文对象映射和 SQL 语句。它在整个转换和执行过程中重用它们。 动态和混合- 它提供了成熟 ORM 的一些高级功能。

    5.9K11

    EF Core的增删改查

    初始化 在实际开发中,一般都是先设计好数据表再进行开发,所以很少用到EF Core的数据迁移功能。所以EF Core的初始化,一般也指的是EF Core上下文初始化。...1.1 连接字符串 我们通过前面的文章知道,EF Core上下文初始化的时候,都需要一个链接字符串。...1.2 配置文件的加载或者实体对象的托管 如果我们不使用配置文件的话,就必须在EF Core上下文类里添加一个类型是DbSet的属性。...2. 数据变化 换句话说,嗯,也就是增删改。在数据增删这两方面,EF Core没有太多需要注意的地方。...也就是说,如果你从EF Core上下文获取了一个实体对象,对这个对象的某些值进行了修改。这时候EF Core其实已经记录了这个对象的修改。

    3.2K20

    多线程下的调用上下文 : CallContext

    数据槽不在其他逻辑线程上的调用上下文之间共享。当 CallContext 沿执行代码路径往返传播并且由该路径中的各个对象检查时,可将对象加到其中。...否 GetData 从System.Runtime.Remoting.Messaging.CallContext中检索具有指定名称的对象 否 LogicalSetData 将给定的对象存储在逻辑调用上下文...data.Value : null; } 4 EF DbContext场景 对于像UnitOfWork这种操作模式,是比较适合于CallContext发挥的地方,让EF DbContext在线程上下文内保持唯一...注意:这里提到的EF均指EF 而非 EF Core。...But,鉴于目前广泛使用线程池的前提,线程在处理完一个请求之后,并没有被销毁,存储在CallContext中的上下文对象也一直存在,如果是下一次拿出这个线程去处理另一个请求,这个上下文对象其实也在不断的膨胀

    92320

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

    EF/EF Core Entity Framework (EF) Core 是轻量化、可扩展、开源和跨平台版的常用 Entity Framework 数据访问技术,EF Core 是适用于 .NET...EF Core 可用作对象关系映射程序 (O/RM),这可以实现以下两点: 使 .NET 开发人员能够使用 .NET 对象处理数据库。 无需再像通常那样编写大部分数据访问代码。...与Massive一样,它以单个文件的形式提供,您可以轻松地将其添加到任何项目或编译(仅限 V5)。...文档地址:https://linq2db.github.io/  GitHub地址:https://github.com/linq2db/linq2db RepoDb RepoDB 是一个开源的 ....内存高效- 它提取并缓存您的对象属性、执行上下文对象映射和 SQL 语句。它在整个转换和执行过程中重用它们。 动态和混合- 它提供了成熟 ORM 的一些高级功能。

    3.8K20

    DDD实战进阶第一波(三):开发一般业务的大健康行业直销系统(搭建支持DDD的轻量级框架二)

    b.支持DDD框架:这个.net core 项目至少要实现以下的功能:聚合根接口定义、实体接口定义、值对象接口定义、仓储接口定义、仓储接口的EF Core顶层实现(工作单元模式)。...2.领域层:界限上下文的领域逻辑 a.首先要实现这个界限上下文的领域对象的POCO模型。...d.定义该界限上下文EF Core上下文接口并实现,这样就通过映射关系,EF Core就可以处理领域对象与数据库表之间的映射了。...3.应用服务层:界限上下文的用例 a.某个上下文的应用服务层的某个用例,通过调用领域对象的领域逻辑,完成相关领域逻辑的实现。...(应用服务通过基础结构层的依赖注入框架与Json配置文件找到聚合根仓储接口对应的实现) c.应用服务层用例然后调用基础结构层的EF Core仓储接口的工作单元方式,完成真正的持久化。

    1.1K60

    .NET 云原生架构师训练营(模块二 基础巩固 EF Core 基础与配置)--学习笔记

    2.4.3 EF Core -- 基础与配置 连接字符串 异步编程 日志 DbContext池 类和配置表 属性和列配置 并发token 索引 Entity Framework Core:https:/.../docs.microsoft.com/zh-cn/ef/core/ 连接字符串 连接字符串:https://docs.microsoft.com/zh-cn/ef/core/miscellaneous...上下文池可以通过重复使用上下文实例,而不是为每个请求创建新实例,从而提高大规模方案(如 web 服务器)的吞吐量。...避免在维护状态的应用程序中使用上下文池。 例如,不应在请求之间共享的上下文中的私有字段。 在将上下文实例添加到池中之前,EF Core 仅重置它知道的状态。...类和配置表 实体类型:https://docs.microsoft.com/zh-cn/ef/core/modeling/entity-types?

    75811

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

    在 Entity Framework CoreEF Core)中,ORM 的概念依然适用,EF Core 提供了 ORM 功能,允许开发者使用 .NET 类型(如类和对象)来表示数据库中的表格和数据,...DbContext:DbContext 是 EF Core 中表示数据库连接和模型的类。每个 DbContext 实例都与一个数据库上下文关联,并且可以用于执行查询和修改数据库中的数据。...下面是如何使用 EF Core 数据迁移的步骤: 添加迁移:使用 Add-Migration 命令添加新的迁移记录。这个命令会创建一个新的迁移类,并将其添加到迁移历史记录中。...EF Core 通过提供事务上下文支持数据库事务。 事务在 EF Core 中的使用涉及以下步骤: 开始事务:在 DbContext 实例中开启一个事务。...Tip: 每个 DbContext 实例都有自己的事务上下文。 事务仅适用于在同一 DbContext 实例中执行的操作。 事务嵌套在 EF Core 中不受支持。

    45500

    EF 相见恨晚的Attach方法

    从解释可以看出Attach方法主要目的就是把一个没有被dbContext跟踪的对象加到dbCotext中使其被dbContext跟踪  1   对象上下文:DBContext 建一个新的上下文实例以创建将连接到的数据库的名称...,默认状态是没有对任何对象跟踪的  2   实体状态:  在EF中对实体状会有4种状态:       2.1  Added:对象为新对象,并且已添加到对象上下文,但尚未调用    2.2  Deleted...:对象已从对象上下文中删除   2.3 Detached:对象存在,但没有被跟踪。...在创建实体之后、但将其添加到对象上下文之前,该实体处于此状态   2.4 Modified:对象上的一个标量属性已更改,但尚未调用    2.5 Unchanged: 此对象尚未经过修改自对象加到上下文中后...的处理方式如下 // 1 把对象加到上下文中,并把状态改为Modified状态 // 2 调用Savechange方法时生成一段Update的SQL语句且Where 条件 // 为对象的主键Id

    1.4K40

    .NET 云原生架构师训练营(模块二 基础巩固 EF Core 基础与配置)--学习笔记

    2.4.3 EF Core -- 基础与配置 连接字符串 异步编程 日志 DbContext池 类和配置表 属性和列配置 并发token 索引 Entity Framework Core:https:/.../docs.microsoft.com/zh-cn/ef/core/ 连接字符串 连接字符串:https://docs.microsoft.com/zh-cn/ef/core/miscellaneous...上下文池可以通过重复使用上下文实例,而不是为每个请求创建新实例,从而提高大规模方案(如 web 服务器)的吞吐量。...避免在维护状态的应用程序中使用上下文池。例如,不应在请求之间共享的上下文中的私有字段。在将上下文实例添加到池中之前,EF Core 仅重置它知道的状态。...类和配置表 实体类型:https://docs.microsoft.com/zh-cn/ef/core/modeling/entity-types?

    95820

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

    Paul Hiles: 3 ways to avoid an anemic domain model in EF Core 1.引言 在使用ORM中(比如Entity Framework)贫血领域模型十分常见...本篇文章将先探讨贫血模型的问题,再去探究在EF Core中使用Code First时如何使用简单的方法来避免贫血模型。...请注意,参数化的构造函数和私有属性设置器的使用方式与我们在建模领域对象时所使用的完全相同。实体框架也需要一个私有无参数构造函数。 在(RDBMS)数据持久性的上下文中,值类型不存在于单独的数据库表中。...在EF6中,我们只需用[ComplexType]属性修饰值对象: [ComplexType] public class Money { ... } 在EF Core中,从版本2开始,我们可以使用...总结 本文介绍了三种非常简单的技术,您可以使用Entity Framework和EF Core从贫血域模型转换为更为丰富的领域模型。使用参数化的构造函数可以确保我们的领域模型在实例化时有效。

    1.4K40

    EF Core使用CodeFirst在MySql中创建新数据库以及已有的Mysql数据库如何使用DB First生成域模型

    官方教程:https://docs.microsoft.com/en-us/aspnet/core/data/?...view=aspnetcore-2.1 使用EF CodeFirst在MySql中创建新的数据库,我们首先在appsettings.json文件夹中,使用json对来给出mysql数据库连接语句,其次在...新建一个类,用来做数据表的基类,同是派生一个继承自DbContext的数据库上下文类,注意!这个新的数据库上下文一定要有构造函数。...然后就执行下面的命令 第一种方案、 从现有Mysql数据库添加到EF Core,使用 程序包控制台(PM): Scaffold-DbContext "server=localhost;port=3306...root;password=mypass;database=sakila" MySql.Data.EntityFrameworkCore -O Model 第二种方案(建议使用第二种方案)、 dotnet ef

    42320

    ASP.Net Core 开发笔记

    Entity Framework (EF) Core 是轻量化、可扩展和跨平台版的常用 Entity Framework 数据访问技术。...EF Core 可用作对象关系映射程序 (O/RM),以便于 .NET 开发人员能够使用 .NET 对象来处理数据库,这样就不必经常编写大部分数据访问代码了。...EF Core 支持的数据集及其Nuget包参阅 https://docs.microsoft.com/zh-cn/ef/core/providers/index 添加Entity Framework...Unit of Work模式 简说了,主要作用是在数据持久化过程中,数据提交,确保数据的完整性,对象使用确保同一上下文对象。如果有异常,提供回滚。 为什么要使用Unit of Work模式?...Uow 和 Repository模式 的关系即: 工作单元服务于仓储,并在工作单元中初始化上下文,为仓储单元提供上下文对象,由此确保同一上下文对象

    1.8K10

    《ASP.ENT Core 与 RESTful API 开发实战》-- (第5章)-- 读书笔记(上)

    第 5 章 使用 Entity Framework Core 5.1 Entity Framework Core EF Core 是微软推出的 ORM 框架,一种为了解决高级编程语言中的对象和关系型数据库之间映射关系的技术...,它能够将程序中的对象自动持久化到关系型数据库中,并能够将数据库中的数据信息自动映射到编程语言中的对象 EF Core 的另一个特点是支持 LINQ,通过 LINQ,我们能够像操作 .NET 集合对象中的数据一样来操作数据库中存储的数据...5.2 使用 EF Core EF Core 有两种使用方式: 代码优先:根据先创建好的实体类来创建数据库和表 数据库优先:根据先创建好的数据库以及其中的数据表来生成与之匹配的实体类 创建一个新项目时...> options) : base(options) { } } } 在 ConfigureServices 方法中将 LibraryDbContext 添加到容器中...migrations add InitialCreation 上述命令成功执行之后项目中多了一个文件夹 Migrations,包含本次迁移 更新一波 EF Core tools dotnet tool

    1.2K20
    领券