# Entity的自动化优化注册

具体代码可查看LessSharp.EntityConfiguration层的Configuration类。

我这个框架用的ORMEntityFramework Core,用的是CodeFirst,用过的人都知道,正常来说,我们添加一个实体类,例如说添加一个用户User实体类,我们需要在DbContext的派生类里创建一个DbSet<User>类型的属性Users,然后再创建迁移文件,再更新数据库,数据库有一个User表。每添加一个实体,都得在DbContext的派生类添加对应的属性。我觉得挺麻烦的,可能我比较懒。

除了以上这种添加属性的方法外,还有另一种方法,就是在DbContext派生类重写OnModelCreating,用ModelBuilder.Entity方法对实体进行注册。本框架就是利用这个功能实现了自动化注册了。

这个自动注册功能会反射Entity层里面所有的实现IEntityIQuery接口的类注册成实体及视图,根据类的配置属性,可实现表名、列名按小写加下划线的命名方式,可根据命名空间自动生成数据库名,还可禁用所有的外键级联删除关系。实体的自动注册只会在系统启动进行生成,所以对系统性能无任何影响。

例如

如果配置功能都开启的话,那命名空间LessSharp.Entity.Sys下面的User实体会生成sys_user的数据库表名,实体的LoginName会生成数据库列名为login_name

# 使用方法

需要在LessSharp.Entity层里创建实体,如果实体对应的是数据库表,那就实现IEntity接口,如果是视图,就实现IQuery接口。

上次更新: 1/3/2021, 9:01:12 PM