top

[.Net Core]一.创建项目及使用EF、CodeFirst方式创建SQLite数据库

创建项目及使用CodeFirst方式创建SQLite数据库

配置环境

创建项目

  1. 在CMD中输入dotnet new mvc -au none -n RGProject创建一个项目名为 RGProject 没有身份验证.Net Core MVC Web 程序,其他额外参数可以使用-h查看。
  2. 输入cd RGProject进入项目目录,输入code .使用VScode打开项目。

安装依赖项

  1. 安装EntityFrameworkCore.Design
    dotnet add package Microsoft.EntityFrameworkCore.Design
  2. 安装EntityFrameworkCore.SQLite
    dotnet add package Microsoft.EntityFrameworkCore.SQLite

创建上下文类

新建RGProjectDbContext.cs,写入以下代码

using Microsoft.EntityFrameworkCore;

namespace RGProject.Models
{
    public class RGProjectDbContext : DbContext
    {
        public RGProjectDbContext(DbContextOptions<RGProjectDbContext> options)
            : base(options)
        { }
    }
}

创建实体类

  1. 新建UserModel.cs,写入

    namespace RGProject.Models
    {
        public class User
        {
            public int ID { get; set; }
            public int Gold { get; set; }
            public int STR { get; set; }
            public int DEX { get; set; }
            public int Lucky { get; set; }
            public bool DayCheck { get; set; }
        }
    }

    类对应位数据库中的表。
    属性对应数据库中表中的一列。

  2. RGProjectDbContext.csRGProjectDbContext中增加一行代码

    public DbSet<User> Users { get; set; }

配置数据库连接字符串

  1. appsettings.json中添加一个ConnectionStrings如下

    "ConnectionStrings":{
    "SqliteDb":"Data Source=mydb.db;"
    }
    表示数据将存储在`mydb.db`文件中。
    
  2. 还需要通过依赖注入注册上下文,在Startup.cs文件中的ConfigureServices函数里添加

    services.AddDbContext<RGProjectDbContext>( options => options.UseSqlite(Configuration.GetConnectionString("SqliteDb")) );
    表示将从`appsettings.json`读取节点名为`SqliteDb`的内容作为连接数据库的`ConnectionStrings`。
    这样EF才可以正确连接至数据库。
    

使用移植命令生成数据库表

  1. 使用Ctrl+~打开终端,输入dotnet ef migrations add Initialize命令。意思是我需要增加一次名为Initialize(可以修改为别的名称)的移植操作。
    EF会读取代码并在项目目录的Migrations文件夹内生成相应的类,例如20190826080100_Initialize.cs,文件中会显示这个移植操作确认后将会对数据库进行的操作,内容如下

    using Microsoft.EntityFrameworkCore.Migrations;
    
    namespace RGProject.Migrations
    {
        public partial class Initialize : Migration
        {
            protected override void Up(MigrationBuilder migrationBuilder)
            {
                migrationBuilder.CreateTable(
                    name: "Users",
                    columns: table => new
                    {
                        ID = table.Column<int>(nullable: false)
                            .Annotation("Sqlite:Autoincrement", true),
                        Gold = table.Column<int>(nullable: false),
                        STR = table.Column<int>(nullable: false),
                        DEX = table.Column<int>(nullable: false),
                        Lucky = table.Column<int>(nullable: false),
                        DayCheck = table.Column<bool>(nullable: false)
                    },
                    constraints: table =>
                    {
                        table.PrimaryKey("PK_Users", x => x.ID);
                    });
            }
    
            protected override void Down(MigrationBuilder migrationBuilder)
            {
                migrationBuilder.DropTable(
                    name: "Users");
            }
        }
    }

    这里可以确认一下是否符合预期操作。

  2. 确认无误后输入dotnet ef database update确认并执行移植操作,这时数据库中才会生成相应的表。

项目地址

Tags:代码.Net Core
上一篇
没有啦~

添加新评论