- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用 Entity Framework Core UseInMemoryDatabase 编写测试,因此我的设置如下所示:
[SetUp]
public void Setup()
{
this.ContextOptions = new DbContextOptionsBuilder<GeneralContext>()
.UseInMemoryDatabase(databaseName: "DiagAc2Tests")
.Options;
}
我不知道是否需要它,但上下文看起来像:
public class GeneralContext : DbContext
{
public DbSet<Entities.Application> Applications { get; set; }
public GeneralContext() { }
public GeneralContext(DbContextOptions<GeneralContext> options) : base(options) { }
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
var config = new DatabaseConfiguration();
optionsBuilder.UseNpgsql(config.GetConnectionString());
}
}
我在我的应用程序中使用了这个上下文并且它有效,所以我的测试看起来像:
public async Task CreateApplicationByService()
{
Mock<DTO.IApplication> mock = new Mock<DTO.IApplication>();
mock.SetupProperty(f => f.Name, "Application");
mock.SetupProperty(f => f.ProjectId, 666);
mock.SetupProperty(f => f.ConfigFilePath, null);
DTO.IApplication appDto = mock.Object;
var entity = this.Mapper.Map<DTO.IApplication, Application>(appDto);
try
{
using var context = new GeneralContext(this.ContextOptions);
await context .ApplicationRepository.Add(entity);
}
catch (Exception ex)
{
var t = ex;
}
var one = 1;
var two = 2;
Assert.True(one != two);
}
我没有任何断言,这就是添加该愚蠢断言的原因,但是当我通过上下文添加记录时,我得到:
Services for database providers 'Microsoft.EntityFrameworkCore.InMemory', 'Npgsql.EntityFrameworkCore.PostgreSQL' have been registered in the service provider. Only a single database provider can be registered in a service provider. If possible, ensure that Entity Framework is managing its service provider by removing the call to UseInternalServiceProvider. Otherwise, consider conditionally registering the database provider, or maintaining one service provider per database provider.
我根据 MSDN 上的文档完成了所有操作,所以有什么地方错了吗?
最佳答案
optionsBuilder.UseNpgsql(config.GetConnectionString());
错误在这一行,这是一个控制反转的例子。你不应该调用 UseNpqSql
在 OnConfiguring.
内它所做的是尝试使用 2 个数据库。
this.ContextOptions = new DbContextOptionsBuilder<GeneralContext>()
.UseInMemoryDatabase(databaseName: "DiagAc2Tests")
.Options;
optionsBuilder.UseNpgsql(config.GetConnectionString());
以上两个语句都会运行。
现在解决这个问题的方法是将 UseNpgsql 移到配置之外并移到您的应用程序启动类中。这当然取决于您的项目以及您希望如何实现它。
关于.net-core - Entity Framework 核心和 UseInMemoryDatabase,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59895144/
我在使用 EntityFrameworkCore 时无法注入(inject)自定义 IAsyncQueryProvider。更准确地说.. 在使用提供的内存数据库功能时,我无法注入(inject)提供
我制作此方法是为了使单元测试 DbContext 更容易。此方法在内存中生成我的 db 的 Context。它之所以有效,是因为我使用实体对其进行了测试(如 _context.Projects、_co
我正在尝试使用 Entity Framework Core UseInMemoryDatabase 编写测试,因此我的设置如下所示: [SetUp] public void Setup
我正在尝试使用 Entity Framework Core UseInMemoryDatabase 编写测试,因此我的设置如下所示: [SetUp] public void Setup
首先,我无法使用 SQL Lite。其次,下面的代码给了我: Error CS1061 'DbContextOptionsBuilder' does not contain a definition
我正在 https://learn.microsoft.com/en-us/aspnet/core/tutorials/web-api-vsc 尝试 dotnet 核心教程 TodoContext.c
我试图将我的 Entity Framework 和身份分离到不同的库,但是当我使用 builder.UseInMemoryDatabase(connectionString); 时我无法进行任何迁移。
我在 Asp.net Core 中使用了 EF,但在下面的代码中出现了以下错误: public class TodoContext : DbContext { public TodoConte
我已将 Web 应用程序项目从 .NET Core 2.1 迁移到 3.1(也将 EF Core 从 2.1.1 迁移到 3.1.0)。 迁移后,一些单元测试不再工作,抛出重复键数据库异常。 我模拟了
我是一名优秀的程序员,十分优秀!