Core2.1 配置Identity并在其上下文中自定义数据库表

作者 sxy407249209 发布于 222 次浏览 讨论

新建一个.NET Core2.1的web项目 选择web应用程序(模型视图控制器)身份验证选择 不进行身份验证

一、安装EF(2.1项目中一开始测试时没装ef依旧可以顺利迁移)

Install-package Microsoft.EntityFrameworkCore Install-package Microsoft.EntityFrameworkCore.SqlServer

CORE2.2与2.1似乎版本冲突 安装时候最好附带版本号 2.2的工具在2.1中无法使用

Microsoft.EntityFrameworkCore:EF框架的核心包

Microsoft.EntityFrameworkCore.SqlServer:针对SqlServer数据库的扩展,使用SqlServer数据库必须。类似的还有MySql,SqlLite等

Microsoft.EntityFrameworkCore.Tools

&Microsoft.EntityFrameworkCore.Design:用户根据现有的数据库生成模型代码等 ,更多参考 :

项目中添加新文件SqlModel

项目中添加新文件SqlModel中新建文件夹Tables

二、Tables中新建用户类和角色类

public class ApplicationUser:IdentityUser<int>

{

}

public class ApplicationRole :IdentityRole<int>

{

}

三、SqlModel中新建数据库上下文(新建类) ApplicationDbContext

public class ApplicationDbContext

{

{

}

protected override void OnModelCreating(ModelBuilder builder)

{

base.OnModelCreating(builder);

}

}

四、在appsettings.json文件中配置数据库连接字符串

"ConnectionStrings": {

"DefaultConnection": "Server=DESKTOP-ATT1EOK;Database=MyConnTest;Trusted_Connection=True;MultipleActiveResultSets=true"

},

五、在Startup文件中注册数据库上下文服务

services.AddDbContext<ApplicationDbContext>(options =>options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));

六、迁移

输入 开启迁移

输入建立快照(快照名称随意写)

输入 Update-Database 升级数据库

生成之后的数据库

七、添加数据表格方法

Tables文件中新建类TableTest1 必须含有主键(主键命名规则 表名+Id)

public class TableTest1

{

public int TableTest1Id { get; set; }

public string Name { get; set; }

}

在ApplicationDbContext数据库上下文中添加

public class ApplicationDbContext : IdentityDbContext<ApplicationUser, ApplicationRole, int>

{

public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options): base(options)

{

}

protected override void OnModelCreating(ModelBuilder builder)

{

base.OnModelCreating(builder);

}

public DbSet<TableTest1> TableTest1s { get; set; }

}

输入建立快照(快照名称随意写)

输入 Update-Database 升级数据库

共有 2 条回复
solenovex

我随便贴点代码,试一下markdown:

using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using ProjectManagement.Core.Entities.ProjectInfo;

namespace ProjectManagement.Core.Interfaces.Repositories.ProjectInfo
{
    public interface IItUnitMemberRepository: IRepository<ItUnitMember>
    {
        Task<ILookup<int, ItUnitMember>> GetForItUnitsAsync(IEnumerable<int> itUnitIds);
    }
}
陈计节

代码还支持高亮的

function(){
    console.log('Hello JavaScript');
}