打算把之前开源的 基于ASP.Net Core开发一套通用后台框架 重新用ASP.Net Core 5写一遍,也算是巩固一下旧知识,学习下新知识。本文是项目搭建初期关于 EF Core 的使用记录
1、项目结构
2、添加引用
LY.Admin.Model
项目添加Microsoft.EntityFrameworkCore
的NuGet引用,因为我们如果 实体属性 需要使用数据批注
方式而不是使用Fluent API
的话是需要用到的。LY.Admin.Repositories
项目添加Microsoft.EntityFrameworkCore
、Microsoft.EntityFrameworkCore.Design
、Microsoft.EntityFrameworkCore.Tools
、Pomelo.EntityFrameworkCore.MySql
的NuGet引用以及LY.Admin.Model
的项目引用。LY.Admin.Web
项目添加Microsoft.EntityFrameworkCore.Design
、Pomelo.EntityFrameworkCore.MySql
的NuGet引用以及LY.Admin.Repositories
的项目引用。
3、创建Model
实体属性有
数据批注
和Fluent API
两种,我们这里两种混合使用,实际项目中只需要一种就可以了。
Entity
我们所有表基本都是有通用字段的,那么把这些通用字段放到一个父类中更好处理。
public class Entity { /// <summary> /// Id /// </summary> [Key] [Column("id")] [Comment("主键Id")] public int Id { get; set; } /// <summary> /// 删除标识 /// </summary> [Column("delete_flag")] [Comment("删除标识")] public int DeleteFlag { get; set; } /// <summary> /// 创建人 /// </summary> [Column("created_by")] [Comment("创建人")] public int CreatedBy { get; set; } /// <summary> /// 创建时间 /// </summary> [Column("created_time")] [Comment("创建时间")] public DateTime CreatedTime { get; set; } /// <summary> /// 更新人 /// </summary> [Column("update_by")] [Comment("更新人")] public int? UpdatedBy { get; set; } /// <summary> /// 更新时间 /// </summary> [Column("update_time")] [Comment("更新时间")] public DateTime? UpdatedTime { get; set; } }
4、Post(演示表)
Author
字段我们使用Fluent API
[Table("tb_post")]public class Post : Entity{ /// <summary> /// 标题 /// </summary> [Column("title")] [Comment("标题")] public string Title { get; set; } /// <summary> /// 内容 /// </summary> [Column("body")] [Comment("内容")] public string Body { get; set; } /// <summary> /// 作者 这里使用 Fluent API 方式去控制 具体见 LY.Admin.Repositories.Database.EntityConfigurations.PostConfiguration /// </summary> public string Author { get; set; }}
5、创建DbContext
如果使用
Fluent API
是需要在OnModelCreating
进行设置的代码如下
DbContext
public class LYAdminDbContext:DbContext{ /// <summary> /// 构造函数 调用父类构造函数 /// </summary> /// <param name="options"></param> public LYAdminDbContext(DbContextOptions<LYAdminDbContext> options) : base(options) { } protected override void OnModelCreating(ModelBuilder modelBuilder) { base.OnModelCreating(modelBuilder); #region 实体属性 // 参考 https://docs.microsoft.com/zh-cn/ef/core/modeling/entity-properties // 可以使用 数据批注 或者 Fluent API modelBuilder.ApplyConfiguration(new PostConfiguration());
No comments:
Post a Comment