告警通知变得轻松便捷——微信告警接口指南
598
2023-04-03
.NET之生成数据库全流程
开篇语
本文主要是回顾下从项目创建到生成数据到数据库(代码优先)的全部过程。采用EFCore作为ORM框架。
本次示例环境:vs2019、net5、mysql
创建项目
本次事例代码是用过vs2019创建的ASP.NET Core Web API项目
可以通过可视化界面创建或者通过命令行创建
dotnet new webapi -o Net5ByDocker
创建实体类
安装连接MySQL数据库组件
增加实体类
[Table("user")] public class User { public User() { Id = Guid.NewGuid().ToString(); } public User(string account, string password, string creater) : this() { Account = account; Password = password; Deleted = false; SetCreater(creater); } [Key] [Comment("主键")] [StringLength(36)] [Required] public string Id { get; private set; } [Comment("帐号")] [StringLength(36)] [Required] public string Account { get; private set; } [Comment("密码")] [StringLength(36)] [Required] public string Password { get; private set; } [Comment("余额")] [Column(TypeName = "decimal(18, 2)")] [Required] public decimal Money { get; set; } [Comment("是否删除")] [Column(TypeName = "tinyint(1)")] [Required] public bool Deleted { get; private set; } [Comment("创建人")] [StringLength(20)] [Required] public string Creater { get; private set; } [Comment("创建时间")] [Required] public DateTime CreateTime { get; private set; } [Comment("修改人")] [StringLength(20)] [Required] public string Modifyer { get; private set; } [Comment("修改时间")] [Required] public DateTime ModifyTime { get; private set; } public void SetCreater(string name) { Creater = name; CreateTime = DateTime.Now; SetModifyer(name); } public void SetModifyer(string name) { Modifyer = name; ModifyTime = DateTime.Now; } }
这种只是增加实体类类型的一种方式,可能这种看着比较乱,还可以通过OnModelCreating实现,详情看参考文档
增加数据库上下文OpenDbContext
public class OpenDbContext : DbContext { public OpenDbContext(DbContextOptions
Startup注入连接数据库操作
var connection = Configuration["DbConfig:Mysql:ConnectionString"]; var migrationsAssembly = IntrospectionExtensions.GetTypeInfo(typeof(Startup)).Assembly.GetName().Name; services.AddDbContext
生成迁移文件
引用组件
迁移命令
add-migration Init
结果
image.png
要看下生成的迁移文件是否是自己预期的那样子,也可以在这一步就生成数据库,命令:Update-Database
数据种子
增加OpenDbSend类,添加数据种子
public class OpenDbSend { ///
设置项目启动时候调用
public static async Task Main(string[] args) { var host = CreateHostBuilder(args).Build(); using (var scope = host.Services.CreateScope()) { var services = scope.ServiceProvider; var loggerFactory = services.GetRequiredService
生成数据库
启动项目,自动生成数据库
image.png
表结构如下
image.png
如果后期数据库字段或者结构有变动,可以再次生成迁移文件然后生成数据库
查询数据
///
一般更推荐建立指定的返回Model类,然后只查询需要的内容,不直接返回实体类
控制器方法
///
查询结果
{ "id": "e8976d0a-6ee9-4e2e-b8d8-1fe6e85b727b", "account": "azrng", "password": "123456", "money": 0, "deleted": false, "creater": "azrng", "createTime": "2021-05-09T15:48:45.730302", "modifyer": "azrng", "modifyTime": "2021-05-09T15:48:45.730425" }
参考文档
发表评论
暂时没有评论,来抢沙发吧~