EF Core学习笔记三
一、Flunet API
Fluent API是一种用于配置EF模型的编程方式,它通过链式调用方式来构建复杂的对象或配置。
Flunet API提供了一种比数据注解(Data Annotaions)更灵活和强大的方式定义模型。
1、使用场景与优势
1.1、复杂关系的配置,当实体之间存在复杂的关系,如多对多感谢,并且需要对这种关系进行详细的配置(比如中间表的字段、关系的约束条件等)是,Fluent API能够踢狗比数据注释更精细的控制。
1.2、定制花配置需求,如果对数据库表的命名规则、列的命名规则、数据类型击默认值等有特殊的定制化要求,Flunet API可以更容易实现这些配置,而不受数据注释的固定模式限制。
1.3、类型安全,与数据注解相比,Fluent API 是类型安全的,编译器可以捕获错误。
2、使用步骤
2.1、创建上下文类型,首先定义实体类、继承DbContext的上下文类;
2.2、配置实体和关系,打开继承DbContext的上下文类,重写OnModelCreating方法
OnModelCreating方法是用来配置模型的关键方法;
OnConfiguring方法是用来配置数据库连接的
使用 ModelBuilder
配置实体:在 OnModelCreating
方法中,使用传入的 ModelBuilder
对象来配置实体
- 配置主键:
modelBuilder.Entity<Blog>() .HasKey(b => b.BlogId);
- 配置属性:
modelBuilder.Entity<Blog>() .Property(b => b.Url) .IsRequired() .HasMaxLength(200);
- 配置关系:
modelBuilder.Entity<Blog>() .HasMany(b => b.Posts) .WithOne(p => p.Blog) .HasForeignKey(p => p.BlogId) .OnDelete(DeleteBehavior.Cascade); //一对多 entity.HasMany(e => e.Orders) .WithOne(e => e.Customer) .HasForeignKey(e => e.CustomerId); //一对一 entity.HasOne(e => e.Address) .WithOne(e => e.Person) .HasForeignKey<P