当前位置: 首页 > 知识库问答 >
问题:

停止使用实体框架核心在Sqlite内存数据库中自动加载相关实体

戚星腾
2023-03-14

我正在使用EF Core(v1.1.3)和C#。

在我的单元测试中,我使用代码优先db模型创建了一个sqlite内存数据库,然后用一些测试数据填充它。但是,当从dB加载实体列表时,相关实体会被填充,尽管没有使用“。包含”。

如果我使用相同的模型来创建一个实际的磁盘数据库,并进行相同的加载,那么只有在使用<代码>时,才会加载相关的实体。包括。

这是sqlite内存实现(v1.1.0)中的错误,还是我错过了什么?

我已经检查过数据库中没有被跟踪的内容,显然我无法处理上下文并更新它,因为它在内存中,我只限于EF的这个版本

显然,为了提高性能,我更喜欢在内存中进行单元测试,而不是开始创建磁盘测试。

共有1个答案

张敏达
2023-03-14

我也有同样的问题。

您需要做的是将为测试创建的实体的状态设置为Detatch。然后,当您再次尝试读取实体时,EF将从DB中获取它。

创建新实体后,写下此行:

dbContext.Entry(entity).State = EntityState.Detached;
 类似资料:
  • 我有一个简单的问题,但似乎找不到解决的办法。我使用的是EntityFramework核心版本2.0.1,希望在默认情况下加载所有实体。 示例: 但当我加载订单实体时,相关实体Customer及其内部地址为null 我所尝试的: 尝试升级到版本2.1并使用LazyLoadingProxies设置为false 这只是一个例子,我有多个嵌套级别的实体,我想在通用存储库中加载嵌套的相关数据,因此不能使用I

  • 我已经找到了几个这样的帖子,但不能确定我在这里做错了什么。 我试着在两张桌子上各放一个项目。第二项包含对第一项的查找。我可以在没有问题的情况下为父级添加种子,但无法找到正确的语法来为子级添加种子。 下面是我用来种子父级的代码 下面是种子子的代码--这将失败: 根据文档的建议,我使用了一个匿名对象,而不是类本身。我也尝试过同时使用navigation属性、外键和nav道具。ID=1的组肯定已经在db

  • 我已经将读上下文和写上下文分开了,现在我将在默认情况下在ReadOnlyContext中启用LazyLoading。我也使用了下面的方法,但不幸的是它不起作用。 我的模型: 我的ef版本: EntityFramework核心版本2.1.2 我得到了这个错误: “为警告‘Microsoft.EntityFrameworkCore.Infrastructure.DetachedLazyLoadingW

  • 当将实体模型转换为DTO时,我对Entity Framework Core(v2.0.1)有一个问题。基本上,通过该短语的任何其他版本,当我不想加载时,它是延迟加载的。这是一个简单的。NET Core Console应用程序(带有Microsoft. EntityFrameworkCore. SqlServer(2.0.1)包)。 现在,当执行方法来检索数据时,它正在执行以下SQL 如您所见,它没

  • 在我的模型中,我有一个聚合根,每个根都有一个关联的的集合。每个都有一个反向导航属性。 我需要一次获取所有的,这导致在我的中出现以下查询 是来自EF上下文的。 问题是懒惰加载没有实现(我也不想实现它),查询后的属性是。所有的东西都正确地通过EF映射。 要检索具有非空的所有的查询应该是什么? 我用的是EF6。

  • 问题内容: 我正在尝试执行本教程http://www.asp.net/mvc/tutorials/getting-started-with-aspnet- mvc3/getting-started-with- mvc3-part4-cs, 但不是使用精简版的SQL Server我在本地计算机上使用完整安装。我阅读本教程的方式是,实体框架是根据我定义的对象创建表的。我的问题是,在运行项目时,我总是得