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 IDENTITY 功能,在目標設為 SQL Server 時,為標示為 OnAdd 的索引鍵屬性產生值。 這是以SQL Server為目標時的預設行為。

ForSqlServerUseIdentityColumns(ModelBuilder, Int32, Int32)
已淘汰.

設定模型以使用 SQL Server IDENTITY 功能,在目標設為 SQL Server 時,為標示為 OnAdd 的索引鍵屬性產生值。 這是以SQL Server為目標時的預設行為。

ForSqlServerUseSequenceHiLo(ModelBuilder, String, String)
已淘汰.

設定模型以使用以序列為基礎的 hi-lo 模式,在以 SQL Server為目標時,產生標示為 OnAdd 之索引鍵屬性的值。

HasDatabaseMaxSize(ModelBuilder, String)

設定 Azure SQL Database 的大小上限。

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)

設定模型以使用以序列為基礎的 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 之索引鍵屬性的值。

適用於