【问题标题】:database not create in blazor using code first approach未使用代码优先方法在 blazor 中创建数据库
【发布时间】:2020-08-25 12:49:59
【问题描述】:

我正在使用 blazor,我正在应用代码优先方法

但问题是我的数据库没有创建

Hierarchy Of My Project

首先我创建一个项目,然后选择 visual studio 2019 -> blazor 应用程序 -> blazor 服务器应用程序

那么

我在 appsetting.json 中添加连接字符串

{
  "ConnectionStrings": {
    "DefaultConnection": "Data Source=servername;Initial Catalog=databasename;User ID=userid;Password=password"
  },
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft": "Warning",
      "Microsoft.Hosting.Lifetime": "Information"
    }
  },
  "AllowedHosts": "*"
}

那么

在startup.cs中初始化的连接字符串名称

 public void ConfigureServices(IServiceCollection services)
        {
            services.AddRazorPages();
            services.AddServerSideBlazor();
            services.AddDbContext<MyDbContext>(options =>
options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));
        }

然后我创建了一个 Emp 类

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 文件夹中创建了一个 razor 组件(EmployeeList)

EmployeeList.razor

@page "/"
@inherits Emp

<h3>EmployeeList</h3>

<div>
    <div>
        <h3>@empname @empcountry</h3>
    </div>
</div>

然后运行项目但没有创建数据库

Output Of My Project

问题是没有创建数据库?

帮助

【问题讨论】:

  • 这是“Data Source=Desktop:000”你的数据源吗?
  • @Biju Kalanjoor 不,我更改了服务器名称,我做错了,请帮助
  • 你应该在你的 dbcontext 构造函数中调用 database.setinitializer()
  • Database.SetInitializer(new CreateDatabaseIfNotExists());如果不存在,将创建数据库
  • @B.Lec 感谢您的建议解决了我的问题

标签: c# visual-studio-2019 blazor blazor-server-side


【解决方案1】:

您可以先安装以下软件包,然后通过添加迁移来运行所需的数据库。请按以下步骤操作:

首先,安装以下软件包:

Microsoft.EntityFrameworkCore.Tools

Microsoft.EntityFrameworkCore.SqlServer

在 Startup.cs 中添加两个:

using Microsoft.EntityFrameworkCore;

services.AddDbContext<Dbcontext>(options =>
           options.UseSqlServer(Configuration.GetConnectionString("DatabaseConnection")));

然后在包管理器控制台中添加:

Add-Migration
Update-Datatbase

【讨论】:

  • Update-Datatbase 有错字应该是Update-Database
【解决方案2】:

您需要在包管理器中输入命令“add-migration [MigrationName]”(选择您的项目)。一旦添加迁移命令成功执行,它会在项目中创建一个名为“Migration”的文件夹,并创建与我们在执行带有某个名称的添加迁移命令时提供的同名 [MigrationName] 的类。

我们只创建了负责创建数据库及其表的迁移脚本。但是我们还没有创建实际的数据库和表。所以,让我们执行迁移脚本并生成数据库和表。因此,执行迁移脚本我们必须执行‘update-database [MigrationName]’命令。

You can refer this link

【讨论】:

【解决方案3】:

只需在配置方法的startup.cs中添加这个

                var context = serviceScope.ServiceProvider.GetRequiredService<MyDbContext>();
                context.Database.EnsureCreated();

Startup.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; }
    }
}

只需在 startup.cs 页面中添加此功能

【讨论】:

    【解决方案4】:
    dotnet tool install --global dotnet-ef
    dotnet add package Microsoft.EntityFrameworkCore.Design
    dotnet ef migrations add InitialCreate
    dotnet ef database update
    

    请参考这里的官方文档:https://docs.microsoft.com/en-us/ef/core/get-started/?tabs=netcore-cli#create-the-database

    【讨论】:

      猜你喜欢
      • 2015-02-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-29
      • 2021-06-16
      • 1970-01-01
      相关资源
      最近更新 更多