【问题标题】:Why doesn't my ConcurrencyCheck work when I use UseInMemoryDatabase?为什么当我使用 UseInMemoryDatabase 时我的 ConcurrencyCheck 不起作用?
【发布时间】:2018-04-11 12:36:32
【问题描述】:

我在内存数据库中使用单元测试。

在条目中我有:

    [Required]
    [ConcurrencyCheck]
    [DatabaseGenerated(DatabaseGeneratedOption.Computed)]
    public byte[] RowVersion { get; set; }

更改 RowVersion 后,SaveChanges 不会抛出异常。 如果我使用 SqlServer 一切正常。

我能用这个做什么?我不会在unitTests中使用sql Server

【问题讨论】:

    标签: database .net-core concurrency in-memory-database


    【解决方案1】:

    InMemory 提供程序的行为并不总是像关系数据库。

    通过调用 UseInMemoryDatabase(),您将获得近似连接到 SQL Server 数据库的轻量级东西,但没有实际数据库连接和 I/O 操作的所有开销。

    就像使用 Mocks 一样,对于我们的绝大多数测试来说,这并不重要。添加记录和读回记录之类的基本功能可以正常工作。

    但是,如果您想针对行为更像 SQL Server 的东西进行测试(例如检查引用完整性约束或光并发),那么您应该考虑改用 SQLite 内存模式。

    查看testing with SQLite 上的这篇微软文章。

    【讨论】:

      猜你喜欢
      • 2021-11-10
      • 1970-01-01
      • 2021-01-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-12
      • 1970-01-01
      • 2019-10-14
      相关资源
      最近更新 更多