创建并配置模型Creating and configuring a model

Entity Framework 使用一组约定基于实体类的定义来构建模型。 可指定其他配置以补充和/或替代约定的内容。

本文介绍可应用于面向任何数据存储的模型配置,以及面向任意关系数据库时可应用的配置。 提供程序还可支持特定于具体数据存储的配置。 有关提供程序特定配置的文档,请参阅 数据库提供程序 部分。

提示

可在 GitHub 上查看此文章的 示例

使用 fluent API 配置模型Use fluent API to configure a model

可在派生上下文中覆写 OnModelCreating 方法,并使用 ModelBuilder API 来配置模型。 此配置方法最为有效,并可在不修改实体类的情况下指定配置。 Fluent API 配置具有最高优先级,并将替代约定和数据注释。

  1. using Microsoft.EntityFrameworkCore;
  2. namespace EFModeling.FluentAPI.Required
  3. {
  4. class MyContext : DbContext
  5. {
  6. public DbSet<Blog> Blogs { get; set; }
  7. #region Required
  8. protected override void OnModelCreating(ModelBuilder modelBuilder)
  9. {
  10. modelBuilder.Entity<Blog>()
  11. .Property(b => b.Url)
  12. .IsRequired();
  13. }
  14. #endregion
  15. }
  16. public class Blog
  17. {
  18. public int BlogId { get; set; }
  19. public string Url { get; set; }
  20. }
  21. }

使用数据注释来配置模型Use data annotations to configure a model

也可将特性(称为数据注释)应用于类和属性。 数据注释会替代约定,但会被 Fluent API 配置替代。

  1. using Microsoft.EntityFrameworkCore;
  2. using System.ComponentModel.DataAnnotations;
  3. namespace EFModeling.DataAnnotations.Required
  4. {
  5. class MyContext : DbContext
  6. {
  7. public DbSet<Blog> Blogs { get; set; }
  8. }
  9. #region Required
  10. public class Blog
  11. {
  12. public int BlogId { get; set; }
  13. [Required]
  14. public string Url { get; set; }
  15. }
  16. #endregion
  17. }