自动生成代码和创建数据库表的一些要点

1、创建的实体的命名空间得是MainInfo.Eshop.XX

XX为文件夹的名称,否则自动生成的代码如Service文件路径有异。

 自动生成代码和创建数据库表的一些要点

 

 

 

2、打开CMD输入以下内容,自动生成代码

abphelper generate crud "DictItem" -d "D:\Workpace\MainInfo.Eshop\aspnet-core" --skip-permissions --skip-db-migrations --skip-ui --skip-view-model --skip-localization --skip-test

abphelper generate crud "TradeRecord" -d "D:\Workpace\MainInfo.Eshop\aspnet-core" --skip-permissions --skip-db-migrations --skip-ui --skip-view-model --skip-localization --skip-test --custom-repository

DictItem 为实体名称

D:\Workpace\MainInfo.Eshop\aspnet-core  为你的解决方案路径,但是路径最后的一级必须是aspnet-core

路径之后的内容为选项,可以自行更改,但是以上为推荐选项

可以增加--Custom Repository ,会自动创建仓储文件,适合于业务特别复杂的实体

其他选项

 自动生成代码和创建数据库表的一些要点

 

 

 

3、实体是软删除还是硬删除取决于你实体继承的类是否带有Full前缀

如FullAuditedEntity<Guid>为软删除,AuditedEntity<Guid>为硬删除

 

4、如果你的实体中含有导航属性,自动生成的Dto文件也会照搬,但是由于Dto所在的层无法引用实体层的原因,会报错,直接删除即可。然后根据逻辑自己手动添加属性如

Public string CategoryName { get ; set ; }

 自动生成代码和创建数据库表的一些要点

 

 

 

 

5、生成代码后找到EShopDbContextModelCreatingExtensions文件,修改数据库配置。

 自动生成代码和创建数据库表的一些要点

 

 

数据库名称:在EShopConsts文件中找到合适的前缀,后加实体名称,建议使用语法糖nameof,以便以后的修改。

使用HasComment方法设置表的注释。

数据库类型:string类型的字段如果不做HasMaxLength方法的设置,在数据库中自动为longtext数据类型,占用资源过大。长度具体如何设置看FieldLengthconsts文件。

数字类型的字段有小数用decimal即可,没有小数用int,不确定是否有小数用decimal。

必填项:不能为空的字段需要加上IsRequired方法。

默认值:默认值使用HasDefaultValue方法,但是需要注意和IsRequired搭配可能会产生一些问题。

 

6、之前说到的导航属性是让EF自动判断外键的一种方式,如果有导航属性了就不需要做额外数据库外键配置。

如果没有自动加外键,则可以在配置文件中设置

b.HasMany(d => d.DictItems).WithOne(r => r.DictCategory);

或者

b.HasOne(d => d.DictCategory).WithMany(r => r.DictItems);

以上是一对多关系的配置。

之后会在数据库中增加外键约束。

 自动生成代码和创建数据库表的一些要点

 

 

且默认为级联删除。

 

7、自动生成代码会重写DbContextModelCreatingExtensions.cs文件,将里面的中文替换成乱码。同时由于我们要重写数据库设置,因此自动生成代码文件后,将对DbContextModelCreatingExtensions文件的修改撤销掉,手动增加即可。

 自动生成代码和创建数据库表的一些要点

 

 

 

8、decimal类型的字段数据库自动生成的数据类型为decimal(65,30),长度和精度过高,因此需要额外设置数值类型的精度和长度。

增加约束:

 自动生成代码和创建数据库表的一些要点

 

 

可以根据业务需求扩展,为求效率目前统一为decimal(10,4);

在数据库设置文件EShopDbContextModelCreatingExtensions中配置。

 自动生成代码和创建数据库表的一些要点

 

 

 

9、在迁移文件命名时建议加上迁移时间和次数。

 自动生成代码和创建数据库表的一些要点

 

 

 

10、增加表的唯一性约束。

 自动生成代码和创建数据库表的一些要点

 

 

 

11、增加表的自增字段。

 自动生成代码和创建数据库表的一些要点

 

 

字段必须得是int类型。

 自动生成代码和创建数据库表的一些要点

 

 

 

 

 

 

上一篇:图像识别-MNIST分类问题


下一篇:Hive性能优化之表数据优化