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

说明

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

功能描述

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

表和字段设计

user:

字段 类型 是否主键 是否为空 说明
id integer Y N 自增id
username text N N 用户名
date timestamp without time zone N N 注册时间
password text N N 密码
email text N N 邮箱
rights text N N 权限

article:

字段 类型 是否主键 是否为空 说明
id integer Y N 自增id
user_id integer N N 用户id
category text N N 分类
title text N N 标题
content text N N 内容
view_counts integer N N 浏览量
date timestamp without time zone N N 发布日期

comment:

字段 类型 是否主键 是否为空 说明
id integer Y N 自增id
user_id integer N N 用户id
article_id integer N N 文章id
content text N N 内容
date timestamp without time zone N N 发布日期

manage:

字段 类型 是否主键 是否为空 说明
id integer Y N 自增id
config_name text N N 设置项名
config_value text N N 设置项值

生成实体类

参考上一节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 options):base(options){

        }
        public DbSet TodoItems {get;set;}
        public DbSet
articles { get; set; } public DbSet comments { get; set; } public DbSet namages { get; set; } public DbSet 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

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

其他

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

你可能感兴趣的:(aps.net,core,postgresql)