語言

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中的建模實體類型與關係 。

建構函式

名稱 Description
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 版本時應用程式失敗。

屬性

名稱 Description
Model

模型正在設定中。

方法

名稱 Description
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 該實體類型的所有屬性所使用。

明確介面實作

名稱 Description
IInfrastructure<IConventionModelBuilder>.Instance

內部是用來配置這個模型的。ModelBuilder

IInfrastructure<InternalModelBuilder>.Instance

內部是用來配置這個模型的。ModelBuilder

此特性是為了透過擴充方法來配置模型而設計。 它並非用於應用程式程式碼中。

擴充方法

名稱 Description
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 Database 的最大大小。

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 Database 的效能水準(SERVICE_OBJECTIVE)配置為字串字面值。

HasPerformanceLevelSql(ModelBuilder, String)

將 Azure SQL Database 的效能水準(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 Database 的服務層級(EDITION)配置為字串字面。

HasServiceTierSql(ModelBuilder, String)

Configures the service tier (EDITION) for Azure SQL Database as a SQL expression.

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)

設定模型以每個階層使用序列,為標記為 OnAdd的關鍵屬性產生值,當目標為 SQL Server 時。

UseNamedDefaultConstraints(ModelBuilder, Boolean)

設定模型以使用命名的預設約束。

適用於