最近在项目中使用EF Core的频率越来越高,当项目比较大的时候,疯狂往DbContext中加各种DbSet,你会不会特难受?如果你是一键生成的大佬,那么请忽略本文。本文旨在不写 DbSet,那么就撸起柚(xiu)子干吧...
正经事 1. 约定规则首先,为了达到偷懒的目的,我们得事先约定些规则,毕竟无规矩不成方圆。具体规则可以自定义,比如我目前的规则就是在数据表对应的实体类加上些特有的Attribute,比如现成的DbContextAttribute,这个Attribute的具体作用请参考MSDN官方文档。
1 using Microsoft.EntityFrameworkCore.Infrastructure; 2 using System; 3 using System.ComponentModel.DataAnnotations; 4 using System.ComponentModel.DataAnnotations.Schema; 5 using Zxw.Framework.NetCore.DbContextCore; 6 using Zxw.Framework.NetCore.Models; 7 8 namespace Zxw.Framework.Website.Models 9 { 10 [DbContext(typeof(SqlServerDbContext))] 11 [Table("SysMenu")] 12 public class SysMenu:BaseModel<string> 13 { 14 [Key] 15 [Column("SysMenuId")] 16 public override string Id { get; set; } 17 18 public string ParentId { get; set; } = String.Empty; 19 20 [MaxLength(2000)] 21 public string MenuPath { get; set; } 22 23 [Required] 24 [MaxLength(20)] 25 public string MenuName { get; set; } 26 27 [MaxLength(50)] 28 public string MenuIcon { get; set; } 29 30 [Required] 31 [MaxLength(100)] 32 public string Identity { get; set; } 33 34 [Required] 35 [MaxLength(200)] 36 public string RouteUrl { get; set; } 37 38 public bool Visiable { get; set; } = true; 39 40 public bool Activable { get; set; } = true; 41 42 [DatabaseGenerated(DatabaseGeneratedOption.Identity)] 43 public int SortIndex { get; set; } 44 } 45 }