Ara*_*ash 2 c# entity-framework ef-core-2.1
我正在尝试将迁移添加到 DbContext ,
add-migration initial -verbose
Run Code Online (Sandbox Code Playgroud)
我收到错误
尚未为此 DbContext 配置数据库提供程序。可以通过覆盖 DbContext.OnConfiguring 方法或在应用程序服务提供者上使用 AddDbContext 来配置提供者。如果使用 AddDbContext,则还要确保您的 DbContext 类型在其构造函数中接受 DbContextOptions 对象并将其传递给 DbContext 的基本构造函数。
我的解决方案中有两个 .netcore 类库项目和 ,netcore 单元测试项目
这是我的 DataContext 类
public class DataContext:DbContext
{
public DataContext(DbContextOptions<DataContext> option) : base(option)
{
}
public DataContext()
{
}
public DbSet<User> User { get; set; }
public DbSet<Cart> Cart { get; set; }
public DbSet<CatalogItem> CatalogItem { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
带有 DbContextOptions 对象的构造函数已经存在。
可能是什么问题?
这是测试项目中的一个类。
public class CustomerRepositoryIntegrationTest
{
[Fact]
public void should_add_customer()
{
//Arrange
var option = new DbContextOptionsBuilder<DataContext>()
.UseSqlServer(@"Data Source=(LocalDb)\MSSQLLocalDB;Database=ecommerce;Integrated Security=SSPI").Options;
//Act
using (DataContext dataConext = new DataContext(option))
{
dataConext.Database.Migrate();
customer actual = new Customer()
dataConext.Customer.Add(actual);
dataConext.SaveChanges();
var expected = dataConext.Customer.FirstOrDefault();
//Assert
expected.Should().BeEquivalentTo(expected);
}
//Assert
}
}
Run Code Online (Sandbox Code Playgroud)
在测试项目中创建一个实现IDesignTimeDbContextFactory的类并将测试项目设置为启动项目
public class TemporaryDataContextFactory : IDesignTimeDbContextFactory<DataContext>
{
public DataContext CreateDbContext(string[] args)
{
var option = new DbContextOptionsBuilder<DataContext>()
.UseSqlServer(@"Data Source=(LocalDb)\MSSQLLocalDB;Database=IbReport;Integrated Security=SSPI").Options;
return new DataContext(option);
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1729 次 |
| 最近记录: |