说明
本节从一个简易个人博客系统的框架和设计库设计开始探索。
功能描述
用户模块:注册,登录。
博文模块:发布,编辑,分类。
评论模块:发布,回复,编辑,删除。
后台管理:系统设置,用户管理。
表和字段设计
user:
字段 | 类型 | 是否主键 | 是否为空 | 说明 |
---|---|---|---|---|
id | integer | Y | N | 自增id |
username | text | N | N | 用户名 |
date | timestamp without time zone | N | N | 注册时间 |
password | text | N | N | 密码 |
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<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
如用命令行工具则参照上篇文章
其他
检查数据表是否全部建立成功,修改实体类结构时如何保留数据更新表暂时留坑。