自动生成代码和创建数据库表的一些要点
2021/11/5 19:13:56
本文主要是介绍自动生成代码和创建数据库表的一些要点,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
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类型。
这篇关于自动生成代码和创建数据库表的一些要点的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-05-15鸿蒙生态设备数量超8亿台
- 2024-05-13TiDB + ES:转转业财系统亿级数据存储优化实践
- 2024-05-09“2024鸿蒙零基础快速实战-仿抖音App开发(ArkTS版)”实战课程已上线
- 2024-05-09聊聊如何通过arthas-tunnel-server来远程管理所有需要arthas监控的应用
- 2024-05-09log4j2这么配就对了
- 2024-05-09nginx修改Content-Type
- 2024-05-09Redis多数据源,看这篇就够了
- 2024-05-09Google Chrome驱动程序 124.0.6367.62(正式版本)去哪下载?
- 2024-05-09有没有大佬知道这种数据应该怎么抓取呀?
- 2024-05-09这种运行结果里的10.100000001,怎么能最快改成10.1?