ModelBuilder 类

定义

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

public class ModelBuilder : Microsoft.EntityFrameworkCore.Infrastructure.IInfrastructure<Microsoft.EntityFrameworkCore.Metadata.Internal.InternalModelBuilder>
public class ModelBuilder : Microsoft.EntityFrameworkCore.Infrastructure.IInfrastructure<Microsoft.EntityFrameworkCore.Metadata.Builders.IConventionModelBuilder>
type ModelBuilder = class
    interface IInfrastructure<InternalModelBuilder>
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)

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

ModelBuilder(ConventionSet, ModelDependencies)

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

ModelBuilder(ConventionSet, ModelDependencies, ModelConfiguration)

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

ModelBuilder(IMutableModel)
已过时.

这是一个支持 Entity Framework Core 基础结构的内部 API,不受与公共 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)

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

Entity(String, Action<EntityTypeBuilder>)

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

Entity(Type)

返回可用于在模型中配置给定实体类型的 对象。 如果实体类型还不是模型的一部分,则会将其添加到模型中。

Entity(Type, Action<EntityTypeBuilder>)

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

Entity<TEntity>()

返回可用于在模型中配置给定实体类型的 对象。 如果实体类型还不是模型的一部分,则会将其添加到模型中。

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

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

FinalizeModel()

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

HasAnnotation(String, Object)

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

HasChangeTrackingStrategy(ChangeTrackingStrategy)

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

HasChangeTrackingStrategy(ChangeTrackingStrategy)

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

Ignore(String)

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

Ignore(Type)

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

Ignore<TEntity>()

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

Owned(Type)

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

Owned<T>()

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

Query(Type)
已过时.

返回一个 对象,该对象可用于在模型中配置给定的查询类型。 如果查询类型还不是模型的一部分,则会将其添加到模型中。

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

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

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

Query(Type, Action<QueryTypeBuilder>)

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

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

Query<TQuery>()
已过时.

返回一个 对象,该对象可用于在模型中配置给定的查询类型。 如果查询类型还不是模型的一部分,则会将其添加到模型中。

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

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

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

SharedTypeEntity(String, Type)

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

SharedTypeEntity(String, Type, Action<EntityTypeBuilder>)

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

SharedTypeEntity<TEntity>(String)

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

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

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

UsePropertyAccessMode(PropertyAccessMode)

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

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

UsePropertyAccessMode(PropertyAccessMode)

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

显式接口实现

IInfrastructure<IConventionModelBuilder>.Instance

用于配置此模型的内部 ModelBuilder

IInfrastructure<InternalModelBuilder>.Instance

用于配置此模型的内部 ModelBuilder

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

扩展方法

HasAutoscaleThroughput(ModelBuilder, Nullable<Int32>)

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

HasDefaultContainer(ModelBuilder, String)

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

HasManualThroughput(ModelBuilder, Nullable<Int32>)

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

GetInfrastructure<T>(IInfrastructure<T>)

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

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

HasDbFunction(ModelBuilder, MethodInfo)

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

HasDbFunction(ModelBuilder, MethodInfo, Action<DbFunctionBuilder>)

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

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

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

HasDefaultSchema(ModelBuilder, String)

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

HasSequence(ModelBuilder, String, Action<SequenceBuilder>)

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

HasSequence(ModelBuilder, String, Action<RelationalSequenceBuilder>)

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

HasSequence(ModelBuilder, String, Action<SequenceBuilder>)

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

HasSequence(ModelBuilder, String, String)

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

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

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

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

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

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

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

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

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

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

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

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

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

HasSequence(ModelBuilder, Type, String, String)

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

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

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

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

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

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

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

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

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

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

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

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

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

HasSequence<T>(ModelBuilder, String, String)

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

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

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

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

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

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

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

UseCollation(ModelBuilder, String)

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

ForSqlServerHasSequence(ModelBuilder, String, Action<RelationalSequenceBuilder>)

以SQL Server为目标时配置数据库序列。

ForSqlServerHasSequence(ModelBuilder, String, String)

以SQL Server为目标时配置数据库序列。

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

以SQL Server为目标时配置数据库序列。

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

以SQL Server为目标时配置数据库序列。

ForSqlServerHasSequence(ModelBuilder, Type, String, String)

以SQL Server为目标时配置数据库序列。

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

以SQL Server为目标时配置数据库序列。

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

以SQL Server为目标时配置数据库序列。

ForSqlServerHasSequence<T>(ModelBuilder, String, String)

以SQL Server为目标时配置数据库序列。

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

以SQL Server为目标时配置数据库序列。

ForSqlServerUseIdentityColumns(ModelBuilder)

将模型配置为在面向 SQL Server 时使用 SQL Server IDENTITY 功能为标记为 OnAdd的关键属性生成值。 这是面向SQL Server时的默认行为。

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

将模型配置为在面向 SQL Server 时使用 SQL Server IDENTITY 功能为标记为 OnAdd的关键属性生成值。 这是面向SQL Server时的默认行为。

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

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

HasDatabaseMaxSize(ModelBuilder, String)

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

HasPerformanceLevel(ModelBuilder, String)

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

HasPerformanceLevelSql(ModelBuilder, String)

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

HasServiceTier(ModelBuilder, String)

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

HasServiceTierSql(ModelBuilder, String)

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

UseHiLo(ModelBuilder, String, String)

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

UseIdentityColumns(ModelBuilder, Int32, Int32)

将模型配置为在面向 SQL Server 时使用 SQL Server IDENTITY 功能为标记为 OnAdd的关键属性生成值。 这是面向SQL Server时的默认行为。

UseIdentityColumns(ModelBuilder, Int64, Int32)

将模型配置为在面向 SQL Server 时使用 SQL Server IDENTITY 功能为标记为 OnAdd的关键属性生成值。 这是面向SQL Server时的默认行为。

UseKeySequences(ModelBuilder, String, String)

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

适用于