📅  最后修改于: 2023-12-03 15:00:36.406000             🧑  作者: Mango
Entity Framework-Fluent API 是 Entity Framework 的另一种配置方式,它允许开发者通过配置模型实体的属性来控制数据库生成的形式、约束以及其他一些细节。
与基于特性的配置方式相比,Fluent API 更加显式和灵活。
下面是一些使用 Fluent API 的示例。
对于每个实体类型,都有一个对应的配置类,可以使用 EntityTypeBuilder<TEntity>
创建。以下代码演示了如何使用 Fluent API 配置实体的主键。
public class Blog
{
public int BlogId { get; set; }
public string Url { get; set; }
}
public class BlogContext : DbContext
{
public DbSet<Blog> Blogs { get; set; }
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Blog>()
.HasKey(b => b.BlogId);
}
}
Fluent API 也允许配置实体属性。以下示例演示如何配置列名和列类型。
public class Blog
{
public int BlogId { get; set; }
public string Url { get; set; }
public DateTime CreatedDate { get; set; }
}
public class BlogContext : DbContext
{
public DbSet<Blog> Blogs { get; set; }
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Blog>()
.Property(b => b.CreatedDate)
.HasColumnType("datetime2")
.HasColumnName("CreatedAt");
}
}
使用 Fluent API 也可以配置实体之间的关系。以下示例演示如何配置一对多关系。
public class Blog
{
public int BlogId { get; set; }
public string Url { get; set; }
public ICollection<Post> Posts { get; set; }
}
public class Post
{
public int PostId { get; set; }
public string Title { get; set; }
public string Content { get; set; }
public int BlogId { get; set; }
public Blog Blog { get; set; }
}
public class BlogContext : DbContext
{
public DbSet<Blog> Blogs { get; set; }
public DbSet<Post> Posts { get; set; }
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Blog>()
.HasMany(b => b.Posts)
.WithOne(p => p.Blog)
.HasForeignKey(p => p.BlogId);
}
}
在使用 Entity Framework 时,Fluent API 是一种更加灵活、更加显式的配置方式,它允许开发者更好地控制数据库生成的形式和细节。虽然 Fluent API 的学习曲线可能比特性配置要陡峭一些,但是一旦掌握,它将成为您 Entity Framework 开发工具包中的强有力的工具。