c# - EF 不会创建空数据库
问题描述
我正在尝试通过 EF 创建一个数据库,以存储成员及其位置。
我看过其他示例,但无论我做什么,当我运行我的程序时,我的数据库都不会被创建。
我注意到我遵循的示例创建了一个 DataInitializer 类,它将一些记录放入数据库中。我还没有这样做,因为我想检查我的数据库是否是用正确的列创建的。
数据库中没有数据会是问题吗?
public class ApplicationDbContext : DbContext
{
public DbSet<Lid> Leden { get; set; }
public DbSet<Locatie> Locaties { get; set; }
public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options)
: base(options)
{
}
protected override void OnModelCreating(ModelBuilder builder)
{
base.OnModelCreating(builder);
builder.ApplyConfiguration(new LidConfiguration());
builder.ApplyConfiguration(new LocatieConfiguration());
}
}
应用设置.json:
{ "ConnectionStrings": {
"DefaultConnection": "Server=.\\sqlexpress;Database=Taijitan;Trusted_Connection=True;MultipleActiveResultSets=true"},
"Logging": {
"LogLevel": {
"Default": "Warning"
}
},
"AllowedHosts": "*"
}
在我遵循的示例中,startup.cs 还包含
services.AddScoped<BeerhallDataInitializer>();
一直在底部
beerhallDataInitializer.InitializeData();
我不认为这是导致问题的原因,但我不再那么确定了
编辑:
public class BeerhallDataInitializer
{
private readonly ApplicationDbContext _dbContext;
public BeerhallDataInitializer(ApplicationDbContext dbContext)
{
_dbContext = dbContext;
}
public void InitializeData()
{
_dbContext.Database.EnsureDeleted();
if (_dbContext.Database.EnsureCreated())
{ *create new objects and add them to _dbcontext*
_dbContext.SaveChanges();
}
}
解决方案
为了运行迁移,您首先需要使用以下命令创建迁移:'dotnet ef migrations add InitialCreate' 其次,您需要使用以下命令运行迁移:'dotnet ef database update' 或创建一些运行的代码缺少迁移,我可以假设它是 beerhallDataInitializer.InitializeData() 所做的,但不能确定,因为我没有关于它的更多信息,但为了能够通过代码迁移,你需要在启动时像这样引用 IApplicationBuilder。 cs 文件:
DbInitializer.Migrate<ApplicationDbContext>(app);
我的 dinitilizer 是:
public static class DbInitializer
{
public static void Migrate<T>(IApplicationBuilder app) where T : DbContext
{
using (var scope = app.ApplicationServices.GetRequiredService<IServiceScopeFactory>().CreateScope())
{
scope.ServiceProvider.GetRequiredService<T>().Database.Migrate();
}
}
}
希望它可以帮助您在下面发表评论,但请提供有关您所做工作的更多信息
编辑:
尝试将连接字符串更改为:
Data Source=localhost\\SQLEXPRESS;Initial Catalog=Taijitan;Integrated Security=True
推荐阅读
- mongodb - MongoDB - 有没有更好的方法来存储 ObjectID 列表?
- reactjs - React/TypeScript:上下文 API 状态下的联合类型
- scala - 来自 Array 列的所有组合的 Spark Dataframe
- r - R For循环替换预先分配的值
- html - 为什么`fxLayoutAlign` 表现不同?
- python - 当每行是一个列表时,将行与其后面的行连接起来
- lerna - 将 Lerna Exec 限定到特定文件夹
- powershell - 我可以通过管道将 Powershell 输出传输到加速器吗?
- git - 创建新的 Git 分支,跳过中间的提交
- python - 在循环中提取复选框值时遇到问题