约定配置
主要规则:
1:表名采用DbContext中对应的DbSet的属性名。
2.数据表列的名称采用实体类属性的名字,列的数据类型采用和实体类属性类型最兼容的类型。
3.数据表列的可空性取决于对应实体类属性的可空性。
4.名字为Id的属性为主键,如果主键为short,int 或者long类型,则默认采用自增字段,如果主键为Guid类型,则默认采用默认的Guid生成机制生成主键值。(SqlServer数据库)
两种配置方式
1.FluentAPI
上图中的配置方法属于FluentAPI的写法,也就是把配置写道单独的配置类中。
缺点:复杂(需要单独为实体类写一个配置类)
优点:解耦(实体类中只需要定义字段内容)
2.Data Annotation
上图中的配置方法属于Data Annotation的写法,把配置以特性(Annotation)的形式标注在实体类中。
缺点:耦合(实体类中就定义了字段的约束,使该实体负有过多的使命)
优点:简单(无需为实体类再创建其他的配置类)
项目中建议统一使用FluentAPI的形式完成对实体类的配置
FluentAPI的更多用法:
1.排除属性映射
通过调用Ignore方法,参数传入字段名称,在数据库生成字段的时候就不会生成该字段。
可以看到在数据库的表中没有生成Test2字段。
2.配置列名或列类型
自定义字段的名称和类型(这里也可以定义长度),可以与实体不同。下面是数据库中的效果:
3.配置主键
如果不特殊配置,EFCore默认把Id或者“实体类型+Id”的属性作为主键,可以用HasKey()来配置其他属性作为主键。
数据库效果:
4.可以使用HasDefaultValue为属性设置默认值
5.索引
主键索引、普通索引、复合索引
免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删