Sql server 如何进行内存中的SQL Server集成测试?

Sql server 如何进行内存中的SQL Server集成测试?,sql-server,testing,.net-core,amazon-dynamodb,Sql Server,Testing,.net Core,Amazon Dynamodb,我希望能够像Amazon的DynamoDb客户端那样创建数据库和表,但要使用Sql Server。可能吗 我使用的是.NETCore,这是用于集成测试的。我想我可以在夹具中插入代码 有人有什么想法吗?EF核心: “EF Core中的迁移功能提供了一种增量迁移的方法 更新数据库架构,使其与应用程序的 数据模型,同时保留数据库中的现有数据。” : “EnsureCreated和EnsureDeleted方法提供了一个轻量级的 用于管理数据库架构的迁移的替代方案。这些 方法在数据是暂时的并且可以被删除

我希望能够像Amazon的DynamoDb客户端那样创建数据库和表,但要使用Sql Server。可能吗

我使用的是.NETCore,这是用于集成测试的。我想我可以在夹具中插入代码

有人有什么想法吗?

EF核心:

“EF Core中的迁移功能提供了一种增量迁移的方法 更新数据库架构,使其与应用程序的 数据模型,同时保留数据库中的现有数据。”

:

“EnsureCreated和EnsureDeleted方法提供了一个轻量级的 用于管理数据库架构的迁移的替代方案。这些 方法在数据是暂时的并且可以被删除的场景中非常有用 架构更改时删除。例如,在原型设计期间,在 测试或本地缓存。“

在运行时创建表

然后使用以下技术之一:

数据种子设定是用初始值填充数据库的过程 一组数据。有几种方法可以在EF中实现这一点 核心:

  • 模型种子数据
  • 手动迁移自定义
  • 自定义初始化逻辑

用已知数据填充它们

您可以在RAM磁盘上启动SQL Server(至少是日志文件)。和/或使用延迟耐久性
ALTER DATABASE x SET delayed_dutability=forced
。您也可以使用内存优化的表,但我认为您无法获得完全的兼容性

顺便说一句:如果您的开发过程完全依赖于这种快捷方式,那么使用这种快捷方式是危险的,因为开发人员很晚才收到关于坏习惯和性能问题的反馈


对于这种易失性数据库(也适用于容器),您需要向测试管道或产品添加一些代码,以实际创建和填充数据库。(如果您使用容器,您可以考虑打包一个预填充的DB快照)

您的意思是什么?最接近的方法是使用一个LocalDB实例,并使用一个在开始时创建的DB,在结束时删除(稍微快一点的方法是保留DB,只丢弃对象本身)。这不在内存中,而且比使用mock慢得多,但它是加速功能兼容的数据库的最快方法(这对于集成测试非常重要)。建议使用带有SSD的机器……您可以更具体地说明“与Amazon的DynamoDb客户端的方式相同”吗。你是说NoSQL吗?没有服务器?在记忆中?