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



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

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

如果我使用相同的模型来创建实际的磁盘数据库并执行相同的加载,则只有在使用.Include时才加载相关实体。

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

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

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

我遇到了完全相同的问题。

您需要做的是为测试创建的实体的状态设置为Detatched。然后,当您尝试再次读取实体时,EF 将从数据库提取它。

创建新实体后编写此行:

dbContext.Entry(entity).State = EntityState.Detached;

相关内容

  • 没有找到相关文章

最新更新