语言

ModelBuilder 类

定义

提供一个简单的 API 图面,用于配置 IMutableModel 定义实体的形状、实体之间的关系以及它们映射到数据库的方式。

public class ModelBuilder : Microsoft.EntityFrameworkCore.Infrastructure.IInfrastructure<Microsoft.EntityFrameworkCore.Metadata.Internal.InternalModelBuilder>
[System.Runtime.CompilerServices.Nullable(0)]
public class ModelBuilder : Microsoft.EntityFrameworkCore.Infrastructure.IInfrastructure<Microsoft.EntityFrameworkCore.Metadata.Builders.IConventionModelBuilder>
public class ModelBuilder : Microsoft.EntityFrameworkCore.Infrastructure.IInfrastructure<Microsoft.EntityFrameworkCore.Metadata.Builders.IConventionModelBuilder>
type ModelBuilder = class
    interface IInfrastructure<InternalModelBuilder>
[<System.Runtime.CompilerServices.Nullable(0)>]
type ModelBuilder = class
    interface IInfrastructure<IConventionModelBuilder>
type ModelBuilder = class
    interface IInfrastructure<IConventionModelBuilder>
Public Class ModelBuilder
Implements IInfrastructure(Of InternalModelBuilder)
Public Class ModelBuilder
Implements IInfrastructure(Of IConventionModelBuilder)
继承
ModelBuilder
特性
实现
IInfrastructure<Microsoft.EntityFrameworkCore.Metadata.Internal.InternalModelBuilder> IInfrastructure<IConventionModelBuilder>

注解

可以通过 ModelBuilder 重写 OnModelCreating(ModelBuilder) 派生上下文来构造上下文的模型。 或者,可以在外部创建模型,并在传递给上下文构造函数的实例上 DbContextOptions 设置该模型。

有关详细信息和示例,请参阅 EF Core 中的建模实体类型和关系 。

构造函数

名称 说明
ModelBuilder()

初始化没有约定的 ModelBuilder 类的新实例。

警告:生成正确的模型需要约定。

ModelBuilder(ConventionSet, ModelDependencies, ModelConfiguration)

这是一个内部 API,支持Entity Framework Core基础结构,不受与公共 API 相同的兼容性标准的约束。 可以在任何版本中更改或删除它,而不通知。 只需在代码中直接使用它,并非常谨慎地知道这样做可能会导致应用程序在更新到新的Entity Framework Core版本时失败。

ModelBuilder(ConventionSet, ModelDependencies)

初始化将应用一组约定的 ModelBuilder 类的新实例。

ModelBuilder(ConventionSet)

初始化将应用一组约定的 ModelBuilder 类的新实例。

ModelBuilder(IMutableModel)
已过时.

这是一个内部 API,支持Entity Framework Core基础结构,不受与公共 API 相同的兼容性标准的约束。 可以在任何版本中更改或删除它,而不通知。 只需在代码中直接使用它,并非常谨慎地知道这样做可能会导致应用程序在更新到新的Entity Framework Core版本时失败。

属性

名称 说明
Model

正在配置的模型。

方法

名称 说明
ApplyConfiguration<TEntity>(IEntityTypeConfiguration<TEntity>)

应用实例中 IEntityTypeConfiguration<TEntity> 定义的配置。

ApplyConfiguration<TQuery>(IQueryTypeConfiguration<TQuery>)
已过时.

应用实例中 IQueryTypeConfiguration<TQuery> 定义的配置。

ApplyConfigurationsFromAssembly(Assembly, Func<Type,Boolean>)

从提供程序集中定义的所有 IEntityTypeConfiguration<TEntity> 实例应用配置。

Entity(String, Action<EntityTypeBuilder>)

在模型中执行给定实体类型的配置。 如果具有提供的名称的实体类型尚未成为模型的一部分,则会将没有相应 CLR 类型的新实体类型添加到模型中。

Entity(String)

返回一个对象,该对象可用于在模型中配置给定实体类型。 如果具有提供的名称的实体类型尚未成为模型的一部分,则会将没有相应 CLR 类型的新实体类型添加到模型中。

Entity(Type, Action<EntityTypeBuilder>)

在模型中执行给定实体类型的配置。 如果实体类型尚未成为模型的一部分,则会将其添加到模型。

Entity(Type)

返回一个对象,该对象可用于在模型中配置给定实体类型。 如果实体类型尚未成为模型的一部分,则会将其添加到模型。

Entity<TEntity>()

返回一个对象,该对象可用于在模型中配置给定实体类型。 如果实体类型尚未成为模型的一部分,则会将其添加到模型。

Entity<TEntity>(Action<EntityTypeBuilder<TEntity>>)

在模型中执行给定实体类型的配置。 如果实体类型尚未成为模型的一部分,则会将其添加到模型。

FinalizeModel()

强制在模型上进行后期处理,使其可供运行时使用。 使用 OnModelCreating(ModelBuilder)后处理时自动发生;此方法允许在无法自动执行的情况下显式运行。

HasAnnotation(String, Object)

在模型上添加或更新批注。 如果具有指定键的 annotation 批注已存在,则会更新其值。

HasChangeTrackingStrategy(ChangeTrackingStrategy)

配置要用于此模型的默认值 ChangeTrackingStrategy 。 此策略指示上下文如何检测实体类型的实例的属性更改。

HasChangeTrackingStrategy(ChangeTrackingStrategy)

配置要用于此模型的默认值 ChangeTrackingStrategy 。 此策略指示上下文如何检测实体类型的实例的属性更改。

HasEmbeddedDiscriminatorName(String)

设置用于 JSON 文档中嵌入的歧视性属性的名称。 默认值为“$type”。

Ignore(String)

从模型中排除具有给定名称的实体类型。 此方法通常用于从按约定添加的模型中删除类型。

Ignore(Type)

从模型中排除具有给定 CLR 类型的实体类型。 此方法通常用于从按约定添加的模型中删除类型。

Ignore<TEntity>()

从模型中排除给定实体类型。 此方法通常用于从按约定添加的模型中删除类型。

Owned(Type)

将实体类型标记为拥有。 对此类型的所有引用都将配置为单独的拥有类型实例。

Owned<T>()

将实体类型标记为拥有。 对此类型的所有引用都将配置为单独的拥有类型实例。

Query(Type, Action<EntityTypeBuilder>)
已过时.

在模型中执行给定查询类型的配置。 如果查询类型尚未成为模型的一部分,则会将其添加到模型。

此重载允许在方法调用中按行方式完成查询类型的配置,而不是在调用 Query<TQuery>()后链接查询类型。 这样,模型级别的其他配置就可以在查询类型的配置后链接。

Query(Type, Action<QueryTypeBuilder>)

在模型中执行给定查询类型的配置。 如果查询类型尚未成为模型的一部分,则会将其添加到模型。

此重载允许在方法调用中按行方式完成查询类型的配置,而不是在调用 Query<TQuery>()后链接查询类型。 这样,模型级别的其他配置就可以在查询类型的配置后链接。

Query(Type)
已过时.

返回可用于在模型中配置给定查询类型的对象。 如果查询类型尚未成为模型的一部分,则会将其添加到模型。

Query<TQuery>()
已过时.

返回可用于在模型中配置给定查询类型的对象。 如果查询类型尚未成为模型的一部分,则会将其添加到模型。

Query<TQuery>(Action<QueryTypeBuilder<TQuery>>)
已过时.

在模型中执行给定查询类型的配置。 如果查询类型尚未成为模型的一部分,则会将其添加到模型。

此重载允许在方法调用中按行方式完成查询类型的配置,而不是在调用 Query<TQuery>()后链接查询类型。 这样,模型级别的其他配置就可以在查询类型的配置后链接。

SharedTypeEntity(String, Type, Action<EntityTypeBuilder>)

返回一个对象,该对象可用于在模型中配置给定的共享类型实体类型。

SharedTypeEntity(String, Type)

返回一个对象,该对象可用于在模型中配置给定的共享类型实体类型。

SharedTypeEntity<TEntity>(String, Action<EntityTypeBuilder<TEntity>>)

返回一个对象,该对象可用于在模型中配置给定的共享类型实体类型。

SharedTypeEntity<TEntity>(String)

返回一个对象,该对象可用于在模型中配置给定的共享类型实体类型。

UsePropertyAccessMode(PropertyAccessMode)

设置 PropertyAccessMode 用于此实体类型的所有属性。

默认情况下,在构造新对象时(通常是从数据库查询实体时)使用后盾字段(如果按约定找到或已指定)。 属性用于所有其他访问。 调用此方法会更改模型中所有属性的行为,如枚举中所述 PropertyAccessMode 。

UsePropertyAccessMode(PropertyAccessMode)

设置 PropertyAccessMode 用于此实体类型的所有属性。

显式接口实现

名称 说明
IInfrastructure<IConventionModelBuilder>.Instance

用于配置此模型的内部 ModelBuilder 模型。

IInfrastructure<InternalModelBuilder>.Instance

用于配置此模型的内部 ModelBuilder 模型。

此属性供扩展方法用来配置模型。 它不应用于应用程序代码。

扩展方法

名称 说明
ForSqlServerHasSequence(ModelBuilder, String, Action<RelationalSequenceBuilder>)

针对SQL Server时配置数据库序列。

ForSqlServerHasSequence(ModelBuilder, String, String, Action<RelationalSequenceBuilder>)

针对SQL Server时配置数据库序列。

ForSqlServerHasSequence(ModelBuilder, String, String)

针对SQL Server时配置数据库序列。

ForSqlServerHasSequence(ModelBuilder, Type, String, Action<RelationalSequenceBuilder>)

针对SQL Server时配置数据库序列。

ForSqlServerHasSequence(ModelBuilder, Type, String, String, Action<RelationalSequenceBuilder>)

针对SQL Server时配置数据库序列。

ForSqlServerHasSequence(ModelBuilder, Type, String, String)

针对SQL Server时配置数据库序列。

ForSqlServerHasSequence<T>(ModelBuilder, String, Action<RelationalSequenceBuilder>)

针对SQL Server时配置数据库序列。

ForSqlServerHasSequence<T>(ModelBuilder, String, String, Action<RelationalSequenceBuilder>)

针对SQL Server时配置数据库序列。

ForSqlServerHasSequence<T>(ModelBuilder, String, String)

针对SQL Server时配置数据库序列。

ForSqlServerUseIdentityColumns(ModelBuilder, Int32, Int32)
已过时.

将模型配置为使用 SQL Server IDENTITY 功能为目标SQL Server时标记为OnAdd“的关键属性”生成值。 这是针对SQL Server时的默认行为。

ForSqlServerUseIdentityColumns(ModelBuilder)

将模型配置为使用 SQL Server IDENTITY 功能为目标SQL Server时标记为OnAdd“的关键属性”生成值。 这是针对SQL Server时的默认行为。

ForSqlServerUseSequenceHiLo(ModelBuilder, String, String)
已过时.

将模型配置为使用基于序列的 hi-lo 模式为目标SQL Server时标记OnAdd的键属性生成值。

GetInfrastructure<T>(IInfrastructure<T>)

从正在使用的隐藏 IInfrastructure<T>属性中获取值。

此方法通常由数据库提供程序(和其他扩展)使用。 它通常不用于应用程序代码。

HasAutoscaleThroughput(ModelBuilder, Nullable<Int32>)

配置自动缩放预配的吞吐量产品/服务。

HasDatabaseMaxSize(ModelBuilder, String)

配置Azure SQL 数据库的最大大小。

HasDbFunction(ModelBuilder, MethodInfo, Action<DbFunctionBuilder>)

在面向关系数据库时配置数据库函数。

HasDbFunction(ModelBuilder, MethodInfo)

在面向关系数据库时配置数据库函数。

HasDbFunction<TResult>(ModelBuilder, Expression<Func<TResult>>)

在面向关系数据库时配置数据库函数。

HasDefaultContainer(ModelBuilder, String)

配置未为实体类型显式配置名称时将使用的默认容器名称。

HasDefaultFullTextLanguage(ModelBuilder, String)

配置用于数据库范围内的全文搜索的默认语言。

HasDefaultSchema(ModelBuilder, String)

配置数据库对象应在其中创建的默认架构(如果未显式配置架构)。

HasDiscriminatorInJsonIds(ModelBuilder, Nullable<Boolean>)

在 JSON“id”值中包含实体类型的歧视性值。 这是 EF Core 9 之前的默认行为。

HasFullTextCatalog(ModelBuilder, String)

在模型中配置全文目录。

HasManualThroughput(ModelBuilder, Nullable<Int32>)

配置手动预配的吞吐量产品/服务。

HasPerformanceLevel(ModelBuilder, String)

将Azure SQL 数据库的性能级别(SERVICE_OBJECTIVE)配置为字符串文本。

HasPerformanceLevelSql(ModelBuilder, String)

将Azure SQL 数据库的性能级别(SERVICE_OBJECTIVE)配置为 SQL 表达式。

HasRootDiscriminatorInJsonId(ModelBuilder, Nullable<Boolean>)

在 JSON“id”值中包含根实体类型的歧视性值。 这允许将具有相同主键的类型保存在同一容器中,同时仍允许使用“ReadItem”查找未知类型。

HasSequence(ModelBuilder, String, Action<RelationalSequenceBuilder>)

在面向关系数据库时配置数据库序列。

HasSequence(ModelBuilder, String, Action<SequenceBuilder>)

在面向关系数据库时配置数据库序列。

HasSequence(ModelBuilder, String, Action<SequenceBuilder>)

在面向关系数据库时配置数据库序列。

HasSequence(ModelBuilder, String, String, Action<RelationalSequenceBuilder>)

在面向关系数据库时配置数据库序列。

HasSequence(ModelBuilder, String, String, Action<SequenceBuilder>)

在面向关系数据库时配置数据库序列。

HasSequence(ModelBuilder, String, String, Action<SequenceBuilder>)

在面向关系数据库时配置数据库序列。

HasSequence(ModelBuilder, String, String)

在面向关系数据库时配置数据库序列。

HasSequence(ModelBuilder, Type, String, Action<RelationalSequenceBuilder>)

在面向关系数据库时配置数据库序列。

HasSequence(ModelBuilder, Type, String, Action<SequenceBuilder>)

在面向关系数据库时配置数据库序列。

HasSequence(ModelBuilder, Type, String, Action<SequenceBuilder>)

在面向关系数据库时配置数据库序列。

HasSequence(ModelBuilder, Type, String, String, Action<RelationalSequenceBuilder>)

在面向关系数据库时配置数据库序列。

HasSequence(ModelBuilder, Type, String, String, Action<SequenceBuilder>)

在面向关系数据库时配置数据库序列。

HasSequence(ModelBuilder, Type, String, String, Action<SequenceBuilder>)

在面向关系数据库时配置数据库序列。

HasSequence(ModelBuilder, Type, String, String)

在面向关系数据库时配置数据库序列。

HasSequence<T>(ModelBuilder, String, Action<RelationalSequenceBuilder>)

在面向关系数据库时配置数据库序列。

HasSequence<T>(ModelBuilder, String, Action<SequenceBuilder>)

在面向关系数据库时配置数据库序列。

HasSequence<T>(ModelBuilder, String, Action<SequenceBuilder>)

在面向关系数据库时配置数据库序列。

HasSequence<T>(ModelBuilder, String, String, Action<RelationalSequenceBuilder>)

在面向关系数据库时配置数据库序列。

HasSequence<T>(ModelBuilder, String, String, Action<SequenceBuilder>)

在面向关系数据库时配置数据库序列。

HasSequence<T>(ModelBuilder, String, String, Action<SequenceBuilder>)

在面向关系数据库时配置数据库序列。

HasSequence<T>(ModelBuilder, String, String)

在面向关系数据库时配置数据库序列。

HasServiceTier(ModelBuilder, String)

将Azure SQL 数据库的服务层(EDITION)配置为字符串文本。

HasServiceTierSql(ModelBuilder, String)

将Azure SQL 数据库的服务层(EDITION)配置为 SQL 表达式。

HasShadowIds(ModelBuilder, Nullable<Boolean>)

强制模型生成始终创建映射到 JSON“id”的“__id”阴影属性。 这是 EF Core 9.0 之前的默认行为。

UseCollation(ModelBuilder, String)

配置数据库排序规则,该排序规则将由所有列使用,而无需显式排序规则。

UseHiLo(ModelBuilder, String, String)

将模型配置为使用基于序列的 hi-lo 模式为目标SQL Server时标记OnAdd的键属性生成值。

UseIdentityColumns(ModelBuilder, Int32, Int32)

将模型配置为使用 SQL Server IDENTITY 功能为目标SQL Server时标记为OnAdd“的关键属性”生成值。 这是针对SQL Server时的默认行为。

UseIdentityColumns(ModelBuilder, Int64, Int32)

将模型配置为使用 SQL Server IDENTITY 功能为目标SQL Server时标记为OnAdd“的关键属性”生成值。 这是针对SQL Server时的默认行为。

UseKeySequences(ModelBuilder, String, String)

将模型配置为在针对SQL Server时,为每个层次结构使用序列来生成标记为OnAdd“键属性”的值。

UseNamedDefaultConstraints(ModelBuilder, Boolean)

将模型配置为使用命名的默认约束。

适用于