我正在使用blazer,我正在应用代码优先方法
但问题是我的数据库没有创建
我的项目的层次结构
我首先创建一个项目,然后选择一个视觉工作室 2019 -> blazor 应用 -> blazor 服务器应用
然后
我在appsetting.json中添加connetionstring
{
"ConnectionStrings": {
"DefaultConnection": "Data Source=servername;Initial Catalog=databasename;User ID=userid;Password=password"
},
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft": "Warning",
"Microsoft.Hosting.Lifetime": "Information"
}
},
"AllowedHosts": "*"
}
然后
上面的连接字符串名称在启动时初始化.cs
public void ConfigureServices(IServiceCollection services)
{
services.AddRazorPages();
services.AddServerSideBlazor();
services.AddDbContext<MyDbContext>(options =>
options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));
}
然后我创建了一个 Emp 类
恩普.cs
namespace BlazorServerApp.Pages
{
public class Emp:ComponentBase
{
public int empid { get; set; }
public string empname { get; set; }
public string empcountry { get; set; }
}
}
然后我创建了一个 mydbcontext 类
MyDbContext.cs
namespace BlazorServerApp.Pages
{
public class MyDbContext:DbContext
{
public MyDbContext(DbContextOptions<MyDbContext> options)
: base(options)
{ }
public DbSet<Emp> emps { get; set; }
}
}
然后我在 pags 文件夹中装箱一个剃须刀组件(员工列表)
EmployeeList.razor
@page "/"
@inherits Emp
<h3>EmployeeList</h3>
<div>
<div>
<h3>@empname @empcountry</h3>
</div>
</div>
然后运行项目,但未创建数据库
我的项目的输出
问题是数据库未创建?
帮助
您需要在包管理器中修饰"add-migration [MigrationName]"(选择您的项目)。一旦添加迁移命令成功执行,它会在项目中创建一个文件夹名称作为"迁移",并创建与我们在执行具有某个名称的添加迁移命令时提供的相同名称 [MigrationName] 的类。
我们只创建了负责创建数据库及其表的迁移脚本。但是我们还没有创建实际的数据库和表。因此,让我们执行迁移脚本并生成数据库和表。因此,在执行迁移脚本时,我们必须执行"update-database [MigrationName]"命令。
您可以参考此链接
只需在启动中添加它.cs在配置方法中
var context = serviceScope.ServiceProvider.GetRequiredService<MyDbContext>();
context.Database.EnsureCreated();
启动.cs
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
using (var serviceScope = app.ApplicationServices.GetService<IServiceScopeFactory>().CreateScope())
{
var context = serviceScope.ServiceProvider.GetRequiredService<MyDbContext>();
context.Database.EnsureCreated();
}
MyDbContext.cs
using Microsoft.AspNetCore.Identity.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore;
using System;
using System.Collections.Generic;
//using System.Data.Entity;
//using System.Data.Entity;
//using System.Data.Entity;
//using System.Data.Entity;
using System.Linq;
using System.Threading.Tasks;
namespace BlazorServerApp.Pages
{
public class MyDbContext: DbContext
{
public MyDbContext(Microsoft.EntityFrameworkCore.DbContextOptions<MyDbContext> options)
: base(options)
{
//System.Data.Entity.Database.SetInitializer<MyDbContext>(new CreateDatabaseIfNotExists<MyDbContext>());
}
public DbSet<Emp> emps { get; set; }
}
}
只需在启动.cs页面中添加此功能
dotnet tool install --global dotnet-ef
dotnet add package Microsoft.EntityFrameworkCore.Design
dotnet ef migrations add InitialCreate
dotnet ef database update
请参阅此处的官方文档:https://learn.microsoft.com/en-us/ef/core/get-started/?tabs=netcore-cli#create-the-database
您可以先安装以下软件包,然后通过添加迁移来运行所需的数据库。请按照以下步骤操作:
首先,安装以下软件包:
Microsoft.EntityFrameworkCore.Tools
Microsoft.EntityFrameworkCore.SqlServer
启动中添加两个.cs:
using Microsoft.EntityFrameworkCore;
services.AddDbContext<Dbcontext>(options =>
options.UseSqlServer(Configuration.GetConnectionString("DatabaseConnection")));
然后在包管理器控制台中添加:
Add-Migration
Update-Datatbase