博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ASP.NET Core使用EntityFrameworkCore CodeFrist
阅读量:5017 次
发布时间:2019-06-12

本文共 4093 字,大约阅读时间需要 13 分钟。

1,安装环境:

如果是VS2015,确保已经升级至 update3或以上

.net core sdk (https://www.microsoft.com/net/download/core)

vs2015 tools

2,创建一个asp.net Core的项目

3,创建实体Entity,用户和角色

public class User    {        public int Id { get; set; }        ///         /// 角色Id        ///         public int RoleId { get; set; }        public virtual Role Role { get; set; }        ///         /// 状态        ///         public int Status { get; set; }        ///         /// 登陆名        ///         public string Login { get; set; }        ///         /// 登陆密码        ///         public string Pwd { get; set; }    }
public class Role    {        public int Id { get; set; }        ///         /// 角色名        ///         public string Name { get; set; }        ///         /// 一个角色的多个用户        ///         public virtual ICollection
Users { get; set; } }

4,创建DbContext

public class EFDbContext: DbContext    {        public EFDbContext(DbContextOptions
options) : base(options) { } public DbSet
Roles { get; set; } public DbSet
Users { get; set; } protected override void OnModelCreating(ModelBuilder modelBuilder) { Role(modelBuilder); User(modelBuilder); } private void User(ModelBuilder modelBuilder) { var userBuilder = modelBuilder.Entity
().ToTable("User"); // Properties userBuilder.Property(t => t.Id).ValueGeneratedOnAdd(); userBuilder.Property(t => t.RoleId).IsRequired(); userBuilder.Property(t => t.Status).IsRequired(); userBuilder.Property(t => t.Login).IsRequired().HasMaxLength(30); userBuilder.Property(t => t.Pwd).IsRequired().HasMaxLength(60); // Primary Key userBuilder.HasKey(t => t.Id); // Index userBuilder.HasIndex(t => t.Login); // Relationships userBuilder.HasOne(t => t.Role).WithMany(t => t.Users).HasForeignKey(t => t.RoleId); } private void Role(ModelBuilder modelBuilder) { var roleBuilder = modelBuilder.Entity
().ToTable("Role"); // Properties roleBuilder.Property(t => t.Id).ValueGeneratedOnAdd(); roleBuilder.Property(t => t.Name).IsRequired().HasMaxLength(30); // Primary Key roleBuilder.HasKey(t => t.Id); } }

5,创建DbInitializer,用于创建初始数据

public class DbInitializer    {        public async static Task InitData(EFDbContext context)        {            if (context.Database != null && context.Database.EnsureCreated())            {                //角色配置                context.Roles.AddRange(new Role[]                {                    new Role { Name="超级管理员" },                    new Role { Name="管理员" }                });                //默认用户                context.Users.AddRange(new User[]                {                    new User { RoleId=1, Login="administrator", Pwd="111111" },                    new User { RoleId=2, Login="admin", Pwd="111111" }                });                await context.SaveChangesAsync();            }        }

6,修改Startup类方法

在ConfigureServices添加如下代码

// DbContextservices.AddDbContext
(options => options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));

在Configure方法内添加

public async void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)        {            loggerFactory.AddConsole(Configuration.GetSection("Logging"));            loggerFactory.AddDebug();            app.UseMvc();            await DbInitializer.InitData(app.ApplicationServices.GetService
()); }

7,修改appsettings.json

{  "ConnectionStrings": {    "DefaultConnection": "Data Source=.;Initial Catalog=LniceCore;Integrated Security=SSPI;"  },  "Logging": {    "IncludeScopes": false,    "LogLevel": { "Default": "Debug", "System": "Information", "Microsoft": "Information" } } }

8,运行程序,查看结果

 

 

转载于:https://www.cnblogs.com/lnice/p/6857195.html

你可能感兴趣的文章
找工作——数据库
查看>>
django后台实现微信公众平台网址接入
查看>>
ActionForm工作原理
查看>>
分布式架构系列:缓存
查看>>
SQL Server错误代码及解释(二)
查看>>
ADO.Net之初入江湖
查看>>
Linux 中 crontab 详解及示例
查看>>
文件内容的读取与写入
查看>>
"Ray, Pass me the dishes!"
查看>>
array方法
查看>>
青蛙学Linux—rsync
查看>>
2017陕西省大学生程序设计竞赛邀请赛总结!
查看>>
Java自定义注解和运行时靠反射获取注解
查看>>
[WPF]限制程序单例运行
查看>>
bzoj3824[Usaco2014 Dec]Guard Mark 奶牛叠罗汉(II)
查看>>
是时候重新审视正在流行的卡片设计趋势了!
查看>>
随便记录
查看>>
SharePoint 2010 容量规划 (二)‏
查看>>
Cucumber环境配置
查看>>
LeetCode Golang 3. 无重复字符的最长子串
查看>>