为什么不能在 DbContextOptionsBuilder 上调用 UseInMemory yDatabase 方法?

首先,我不能使用 SQL Lite:

错误 CS1061“ DbContextOptionsBuilder”不包含“ UseInMemory yDatabase”的定义,也找不到接受第一个参数类型为“ DbContextOptionsBuilder”的扩展方法“ UseInMemory yDatabase”(是否缺少 using 指令或汇编引用?)

密码:

 var options = new DbContextOptionsBuilder<ProductContext>()
.UseInMemoryDatabase(Guid.NewGuid().ToString())
.Options;
var context = new ProductContext(options);

背景

using Memory.Models;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.EntityFrameworkCore;


namespace Memory.Data
{
public class ProductContext : DbContext
{
public ProductContext(DbContextOptions<ProductContext> options) : base(options)
{


}
public DbSet<Category> Categories { get; set; }
public DbSet<Product> Products { get; set; }
}
}

我的 CSPROJ 项目文件

<ItemGroup>
<PackageReference Include="Microsoft.ApplicationInsights.AspNetCore" Version="2.0.0" />
<PackageReference Include="Microsoft.AspNetCore" Version="1.1.5" />
<PackageReference Include="Microsoft.AspNetCore.Mvc" Version="1.1.6" />
<PackageReference Include="Microsoft.AspNetCore.StaticFiles" Version="1.1.3" />
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="1.1.5" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="1.1.0" />
<PackageReference Include="Microsoft.Extensions.Logging.Debug" Version="1.1.2" />
<PackageReference Include="Microsoft.VisualStudio.Web.BrowserLink" Version="1.1.3" />
</ItemGroup>


<ItemGroup>
<DotNetCliToolReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Tools" Version="1.0.3" />
</ItemGroup>

确切的问题是这种方法不可用。我不明白为什么。在这个问题上我需要启发。

82593 次浏览

根据 EF 核心: 内存测试的参考资料,在 DbContextOptionsBuilder中使用 UseInMemoryDatabase()扩展方法需要添加 内存包:

Install-Package Microsoft.EntityFrameworkCore.InMemory

然后,您可以按照“编写测试”部分中给出的例子进行操作,如下所示:

var options = new DbContextOptionsBuilder<ProductContext>().UseInMemoryDatabase(databaseName: "database_name").Options;


using (var context = new ProductContext(options))
{
// add service here
}

您需要它来使用 UseInMemory 数据库

<ItemGroup>
<PackageReference Include="Microsoft.EntityFrameworkCore.InMemory" Version="3.0.0" />
</ItemGroup>

检查你的 NuGet Package Manager = > Manage Packages for Solution ,检查所有这些软件包,是否在你的解决方案中得到 安装,如下:

  1. 实体框架核心
  2. 实体框架核心
  3. 内存
  4. 微软。实体框架核心。关系
  5. 微软。实体框架核心
  6. Microsoft.EntityFrameworkCore.SqlServer
  7. 工具

我解决了相同的问题后,检查所有上述软件包已安装。

Visual Studio 2019: 通过控制台..。

工具 (菜单)-> NuGet 软件包管理器-> 包管理器控制台,然后键入 dotnet add package Microsoft.EntityFrameworkCore.InMemory image

或者通过使用包管理器..。

Tools (menu)-> NuGet 软件包管理器-> 为解决方案管理 NuGet 软件包-> NuGet (打开的标签)-> 搜索“ inmemory”-> Select Microsoft。EntityFrameworkCore.InMemory-> 勾选框 Project-> 安装(按钮) image

Visual Studio 代码: 通过终端..。

在屏幕底部,选择 晚期(tab) ,然后键入 dotnet add package Microsoft.EntityFrameworkCore.InMemory

image

在 Mac 中,在 project 目录中打开终端或在 视觉工作室中右键单击 project-> 工具-> 终端机打开

在终端安装包中,通过以下命令->

dotnet add package Microsoft.EntityFrameworkCore.InMemory