2021-06-01

ASP.Net Core5.0 EF Core使用记录

打算把之前开源的 基于ASP.Net Core开发一套通用后台框架 重新用ASP.Net Core 5写一遍,也算是巩固一下旧知识,学习下新知识。本文是项目搭建初期关于 EF Core 的使用记录

1、项目结构

LYAdmin项目结构.png

2、添加引用

LY.Admin.Model项目添加Microsoft.EntityFrameworkCore的NuGet引用,因为我们如果 实体属性 需要使用数据批注方式而不是使用Fluent API的话是需要用到的。
LY.Admin.Repositories项目添加Microsoft.EntityFrameworkCoreMicrosoft.EntityFrameworkCore.DesignMicrosoft.EntityFrameworkCore.ToolsPomelo.EntityFrameworkCore.MySql的NuGet引用以及LY.Admin.Model的项目引用。
LY.Admin.Web项目添加Microsoft.EntityFrameworkCore.DesignPomelo.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