繁体   English   中英

使用 Entity Framework Core 停止在 Sqlite 内存 dB 中自动加载相关实体

[英]Stop related entities being loaded automatically in Sqlite in-memory dB using Entity Framework Core

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

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

如果我使用相同的 model 创建一个实际的磁盘数据库并执行相同的加载,那么只有在我使用.Include时才会加载相关实体。

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

我已经检查过数据库中没有任何内容被跟踪,显然我无法处理上下文并更新它,因为它在内存中,而且我目前仅限于这个版本的 EF & Sqlite,因为遗留原因。

显然,为了性能,我更愿意为单元测试提供内存选项,而不是开始创建磁盘测试。

我遇到了完全相同的问题,您需要做的是分离您为测试创建的实体。 只有当您再次尝试读取实体时,EF 才会从数据库中获取它。

创建新实体后写下这一行: dbContext.Entry(entity).State = EntityState.Detached;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM