全栈练习二:简易个人博客系统数据库设计

说明

本节从一个简易个人博客系统的框架和设计库设计开始探索。

功能描述

用户模块:注册,登录。
博文模块:发布,编辑,分类。
评论模块:发布,回复,编辑,删除。
后台管理:系统设置,用户管理。

表和字段设计

user:

字段类型是否主键是否为空说明
idintegerYN自增id
usernametextNN用户名
datetimestamp without time zoneNN注册时间
passwordtextNN密码
emailtextNN邮箱
rightstextNN权限

article:

字段类型是否主键是否为空说明
idintegerYN自增id
user_idintegerNN用户id
categorytextNN分类
titletextNN标题
contenttextNN内容
view_countsintegerNN浏览量
datetimestamp without time zoneNN发布日期

comment:

字段类型是否主键是否为空说明
idintegerYN自增id
user_idintegerNN用户id
article_idintegerNN文章id
contenttextNN内容
datetimestamp without time zoneNN发布日期

manage:

字段类型是否主键是否为空说明
idintegerYN自增id
config_nametextNN设置项名
config_valuetextNN设置项值

生成实体类

参考上一节code first的代码,先制作实体类,然后生成数据库表。
在Models目录下添加:
article.cs

using System;
using System.ComponentModel.DataAnnotations;

namespace TodoApi.Models
{
    public class article
    {
        [Key]
        public int id { get; set; }
        [Required]
        public int user_id { get; set; }
        [Required]
        public string category { get; set; }
        [Required]
        public string title { get; set; }
        [Required]
        public string content { get; set; }
        [Required]
        public int view_counts { get; set; }
        [Required]
        public DateTime date { get; set; }
    }
}

comment.cs

using System;
using System.ComponentModel.DataAnnotations;

namespace TodoApi.Models
{
    public class comment
    {
        [Key]
        public int id { get; set; }
        [Required]
        public int user_id { get; set; }
        [Required]
        public int article_id { get; set; }
        [Required]
        public DateTime date { get; set; }
        [Required]
        public string content { get; set; }
    }
}

manage.cs

using System.ComponentModel.DataAnnotations;

namespace TodoApi.Models
{
    public class manage
    {
        [Key]
        public int id { get; set; }
        [Required]
        public string config_name { get; set; }
        [Required]
        public string config_value { get; set; }
    }
}

user.cs

using System;
using System.ComponentModel.DataAnnotations;

namespace TodoApi.Models
{
    public class user
    {
        [Key]
        public int id { get; set; }
        [Required]
        public string username { get; set; }
        [Required]
        public DateTime date { get; set; }
        [Required]
        public string password { get; set; }
        [Required]
        public string email { get; set; }
        [Required]
        public string rights { get; set; }
    }
}

可非空字段可以去掉[Required],在类型后加问号,如:public DateTime? date { get; set; }

修改数据库上下文TodoContext.cs

using Microsoft.EntityFrameworkCore;
namespace TodoApi.Models{
    public class TodoContext :DbContext
    {
        public TodoContext(DbContextOptions<TodoContext> options):base(options){

        }
        public DbSet<TodoItem> TodoItems {get;set;}
        public DbSet<article> articles { get; set; }
        public DbSet<comment> comments { get; set; }
        public DbSet<manage> namages { get; set; }
        public DbSet<user> users { get; set; }

        protected override void OnModelCreating(ModelBuilder modelBuilder)
        {
            base.OnModelCreating(modelBuilder);
        }
    }
}

更新数据库

同理,VS包管理器中执行

Add-Migration user
Add-Migration comment
Add-Migration manage
Add-Migration article
Update-Database

如用命令行工具则参照上篇文章

其他

检查数据表是否全部建立成功,修改实体类结构时如何保留数据更新表暂时留坑。

  • 0
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值