【发布时间】:2017-09-26 22:41:39
【问题描述】:
这是我的数据库上下文类
public class WorldContext : IdentityDbContext<WorldUser>
{
private IConfigurationRoot _config;
public WorldContext(IConfigurationRoot config, DbContextOptions options): base(options)
{
_config = config;
}
public DbSet<Trip> Trips { get; set; }
public DbSet<Stop> Stops { get; set; }
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
base.OnConfiguring(optionsBuilder);
optionsBuilder.UseSqlServer(_config["ConnectionStrings:WorldContextConnection"]);
}
}
这是我尝试创建 dbcontext 实例的测试代码部分。
var builder = new ConfigurationBuilder();
var config = builder.Build();
var options = new DbContextOptionsBuilder<WorldContext>()
.UseInMemoryDatabase(Guid.NewGuid().ToString())
.Options;
var context = new WorldContext(config, options);
VS 中没有错误并且构建正常,但测试失败:
消息:System.ArgumentNullException:值不能为空。 参数名称:连接字符串
[堆栈跟踪中有对此的引用:]
在 TheWorld.DAL.Models.WorldContext.OnConfiguring(DbContextOptionsBuilder optionsBuilder)
【问题讨论】:
-
它说连接字符串丢失。你确定你在配置文件中设置了连接字符串吗?
-
@ChetanRanpariya 我想这是通过配置参数传入的,这是我正在努力构建的。虽然因为我用它来测试我在选项中使用
.InMemoryDatabase所以也许我不应该使用我的实际连接字符串,因为我不想点击实际的数据库......(?)
标签: c# entity-framework unit-testing asp.net-core entity-framework-core