团购网站发展,排版设计,旅游网站案例,重庆公司有哪些目录 约定配置
主要规则
两种配置方式
Data Annotation
Fluent API
Fluent API配置
Fluent API众多方法
选择 约定配置
主要规则
表名采用DbContext中的对应的DbSet的属性名。数据表列的名字采用实体类属性的名字#xff0c;列的数据类型采用和实体类属性类型最兼容…目录 约定配置
主要规则
两种配置方式
Data Annotation
Fluent API
Fluent API配置
Fluent API众多方法
选择 约定配置
主要规则
表名采用DbContext中的对应的DbSet的属性名。数据表列的名字采用实体类属性的名字列的数据类型采用和实体类属性类型最兼容的类型。数据表列的可空性取决于对应实体类属性的可空性。名字为Id的属性为主键如果主键为short, int 或者 long类型则默认采用自增字段如果主键为Guid类型则默认采用默认的Guid生成机制生成主键值。
两种配置方式
Data Annotation
把配置以特性Annotation的形式标注在实体类中。
优点简单缺点耦合。
[Table(T_Books)]
public class Book
{
}
Fluent API
把配置写到单独的配置类中。 缺点复杂优点解耦。
builder.ToTable(T_Books);
Fluent API配置
视图与实体类映射 modelBuilder.EntityBlog().ToView(blogsView);排除属性映射 modelBuilder.EntityBlog().Ignore(b b. Name2);配置列名 modelBuilder.EntityBlog().Property(bb.BlogId).HasColumnName(blog_id);配置列数据类型 builder.Property(e e.Title) .HasColumnType(varchar(200))配置主键 默认把名字为Id或者“实体类型Id“的属性作为主键可以用HasKey()来配置其他属性作为主键。modelBuilder.EntityStudent().HasKey(c c.Number);支持复合主键但是不建议使用。生成列的值 modelBuilder.EntityStudent().Property(b b.Number).ValueGeneratedOnAdd();设置默认值 modelBuilder.EntityStudent().Property(b b.Age).HasDefaultValue(6);索引 modelBuilder.EntityBlog().HasIndex(b b.Url);复合索引 modelBuilder.EntityPerson().HasIndex(p new { p.FirstName, p.LastName });唯一索引IsUnique()聚集索引IsClustered()用EF Core太多高级特性的时候谨慎尽量不要和业务逻辑混合在一起以免“不能自拔”。比如Ignore、Shadow、Table Splitting等……
Fluent API众多方法
Fluent API中很多方法都有多个重载方法。比如HasIndex、Property()。 把Number属性定义为索引下面两种方法都可以
builder.HasIndex(Number);
builder.HasIndex(bb.Number);
推荐使用HasIndex(bb.Number)、Property(b b.Number)这样的写法因为这样利用的是C#的强类型检查机制
选择 Data Annotation 、Fluent API大部分功能重叠。可以混用但是不建议混用。有人建议混用即用了Data Annotation 的简单又用到Fluent API的强大而且实体类上标注的[MaxLength(50)]、[Required]等标注可以被ASP.NET Core中的验证框架等复用。