Jazyk

ModelBuilder Třída

Definice

Poskytuje jednoduchou plochu rozhraní API pro konfiguraci IMutableModel , která definuje tvar entit, vztahy mezi nimi a způsob mapování na databázi.

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)
Dědičnost
ModelBuilder
Atributy
Implementuje
IInfrastructure<Microsoft.EntityFrameworkCore.Metadata.Internal.InternalModelBuilder> IInfrastructure<IConventionModelBuilder>

Poznámky

Model pro kontext můžete vytvořit ModelBuilder přepsáním OnModelCreating(ModelBuilder) odvozeného kontextu. Alternativně můžete vytvořit model externě a nastavit ho v DbContextOptions instanci, která se předá konstruktoru kontextu.

Další informace a příklady najdete v tématu Modelování typů entit a relací v EF Core .

Konstruktory

Název Description
ModelBuilder()

Inicializuje novou instanci ModelBuilder třídy bez konvencí.

Upozornění: Konvence jsou potřeba k sestavení správného modelu.

ModelBuilder(ConventionSet, ModelDependencies, ModelConfiguration)

Jedná se o interní rozhraní API, které podporuje infrastrukturu Entity Framework Core a nevztahuje se na stejné standardy kompatibility jako veřejná rozhraní API. Může se změnit nebo odebrat bez upozornění v jakékoli verzi. Měli byste ho používat přímo ve svém kódu s extrémní opatrností a vědět, že to může vést k selháním aplikace při aktualizaci na novou Entity Framework Core verzi.

ModelBuilder(ConventionSet, ModelDependencies)

Inicializuje novou instanci ModelBuilder třídy, která použije sadu konvencí.

ModelBuilder(ConventionSet)

Inicializuje novou instanci ModelBuilder třídy, která použije sadu konvencí.

ModelBuilder(IMutableModel)
Zastaralé.

Jedná se o interní rozhraní API, které podporuje infrastrukturu Entity Framework Core a nevztahuje se na stejné standardy kompatibility jako veřejná rozhraní API. Může se změnit nebo odebrat bez upozornění v jakékoli verzi. Měli byste ho používat přímo ve svém kódu s extrémní opatrností a vědět, že to může vést k selháním aplikace při aktualizaci na novou Entity Framework Core verzi.

Vlastnosti

Název Description
Model

Konfigurovaný model.

Metody

Název Description
ApplyConfiguration<TEntity>(IEntityTypeConfiguration<TEntity>)

Použije konfiguraci definovanou IEntityTypeConfiguration<TEntity> v instanci.

ApplyConfiguration<TQuery>(IQueryTypeConfiguration<TQuery>)
Zastaralé.

Použije konfiguraci definovanou IQueryTypeConfiguration<TQuery> v instanci.

ApplyConfigurationsFromAssembly(Assembly, Func<Type,Boolean>)

Použije konfiguraci ze všech IEntityTypeConfiguration<TEntity> instancí definovaných v zadaném sestavení.

Entity(String, Action<EntityTypeBuilder>)

Provádí konfiguraci daného typu entity v modelu. Pokud typ entity s zadaným názvem ještě není součástí modelu, přidá se do modelu nový typ entity, který nemá odpovídající typ CLR.

Entity(String)

Vrátí objekt, který lze použít ke konfiguraci daného typu entity v modelu. Pokud typ entity s zadaným názvem ještě není součástí modelu, přidá se do modelu nový typ entity, který nemá odpovídající typ CLR.

Entity(Type, Action<EntityTypeBuilder>)

Provádí konfiguraci daného typu entity v modelu. Pokud typ entity ještě není součástí modelu, přidá se do modelu.

Entity(Type)

Vrátí objekt, který lze použít ke konfiguraci daného typu entity v modelu. Pokud typ entity ještě není součástí modelu, přidá se do modelu.

Entity<TEntity>()

Vrátí objekt, který lze použít ke konfiguraci daného typu entity v modelu. Pokud typ entity ještě není součástí modelu, přidá se do modelu.

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

Provádí konfiguraci daného typu entity v modelu. Pokud typ entity ještě není součástí modelu, přidá se do modelu.

FinalizeModel()

Vynutí následné zpracování modelu tak, aby byl připravený k použití modulem runtime. K tomuto následnému zpracování dochází při použití OnModelCreating(ModelBuilder)automaticky. Tato metoda umožňuje, aby se spouštěla explicitně v případech, kdy automatické spuštění není možné.

HasAnnotation(String, Object)

Přidá nebo aktualizuje poznámku modelu. Pokud anotaci s klíčem zadaným v annotation tomto klíči již existuje, aktualizuje se jeho hodnota.

HasChangeTrackingStrategy(ChangeTrackingStrategy)

Nakonfiguruje výchozí hodnotu ChangeTrackingStrategy , která se má použít pro tento model. Tato strategie označuje, jak kontext rozpozná změny vlastností pro instanci typu entity.

HasChangeTrackingStrategy(ChangeTrackingStrategy)

Nakonfiguruje výchozí hodnotu ChangeTrackingStrategy , která se má použít pro tento model. Tato strategie označuje, jak kontext rozpozná změny vlastností pro instanci typu entity.

HasEmbeddedDiscriminatorName(String)

Nastaví název tak, aby se používal pro diskriminující vlastnosti vložené do dokumentů JSON. Výchozí hodnota je $type.

Ignore(String)

Vyloučí typ entity s daným názvem z modelu. Tato metoda se obvykle používá k odebrání typů z modelu, které byly přidány konvencí.

Ignore(Type)

Vyloučí typ entity s daným typem CLR z modelu. Tato metoda se obvykle používá k odebrání typů z modelu, které byly přidány konvencí.

Ignore<TEntity>()

Vyloučí daný typ entity z modelu. Tato metoda se obvykle používá k odebrání typů z modelu, které byly přidány konvencí.

Owned(Type)

Označí typ entity jako vlastněný. Všechny odkazy na tento typ budou nakonfigurovány jako samostatné instance vlastněného typu.

Owned<T>()

Označí typ entity jako vlastněný. Všechny odkazy na tento typ budou nakonfigurovány jako samostatné instance vlastněného typu.

Query(Type, Action<EntityTypeBuilder>)
Zastaralé.

Provádí konfiguraci daného typu dotazu v modelu. Pokud typ dotazu ještě není součástí modelu, přidá se do modelu.

Toto přetížení umožňuje konfiguraci typu dotazu provést v řádku v volání metody namísto zřetězování po volání Query<TQuery>(). To umožňuje další konfiguraci na úrovni modelu zřetězený po konfiguraci pro typ dotazu.

Query(Type, Action<QueryTypeBuilder>)

Provádí konfiguraci daného typu dotazu v modelu. Pokud typ dotazu ještě není součástí modelu, přidá se do modelu.

Toto přetížení umožňuje konfiguraci typu dotazu provést v řádku v volání metody namísto zřetězování po volání Query<TQuery>(). To umožňuje další konfiguraci na úrovni modelu zřetězený po konfiguraci pro typ dotazu.

Query(Type)
Zastaralé.

Vrátí objekt, který lze použít ke konfiguraci daného typu dotazu v modelu. Pokud typ dotazu ještě není součástí modelu, přidá se do modelu.

Query<TQuery>()
Zastaralé.

Vrátí objekt, který lze použít ke konfiguraci daného typu dotazu v modelu. Pokud typ dotazu ještě není součástí modelu, přidá se do modelu.

Query<TQuery>(Action<QueryTypeBuilder<TQuery>>)
Zastaralé.

Provádí konfiguraci daného typu dotazu v modelu. Pokud typ dotazu ještě není součástí modelu, přidá se do modelu.

Toto přetížení umožňuje konfiguraci typu dotazu provést v řádku v volání metody namísto zřetězování po volání Query<TQuery>(). To umožňuje další konfiguraci na úrovni modelu zřetězený po konfiguraci pro typ dotazu.

SharedTypeEntity(String, Type, Action<EntityTypeBuilder>)

Vrátí objekt, který lze použít ke konfiguraci daného typu entity sdíleného typu v modelu.

SharedTypeEntity(String, Type)

Vrátí objekt, který lze použít ke konfiguraci daného typu entity sdíleného typu v modelu.

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

Vrátí objekt, který lze použít ke konfiguraci daného typu entity sdíleného typu v modelu.

SharedTypeEntity<TEntity>(String)

Vrátí objekt, který lze použít ke konfiguraci daného typu entity sdíleného typu v modelu.

UsePropertyAccessMode(PropertyAccessMode)

PropertyAccessMode Nastaví použití pro všechny vlastnosti tohoto typu entity.

Ve výchozím nastavení se backingové pole, pokud je nalezeno podle konvence nebo bylo zadáno, používá se při vytváření nových objektů, obvykle při dotazování entit z databáze. Vlastnosti se používají pro všechny ostatní přístupy. Volání této metody witll změnit chování pro všechny vlastnosti v modelu, jak je popsáno v výčtu PropertyAccessMode .

UsePropertyAccessMode(PropertyAccessMode)

PropertyAccessMode Nastaví použití pro všechny vlastnosti tohoto typu entity.

Explicitní implementace rozhraní

Název Description
IInfrastructure<IConventionModelBuilder>.Instance

Interní ModelBuilder , který se používá ke konfiguraci tohoto modelu.

IInfrastructure<InternalModelBuilder>.Instance

Interní ModelBuilder , který se používá ke konfiguraci tohoto modelu.

Tato vlastnost je určená pro použití metodami rozšíření ke konfiguraci modelu. Není určen k použití v kódu aplikace.

Metody rozšíření

Název Description
ForSqlServerHasSequence(ModelBuilder, String, Action<RelationalSequenceBuilder>)

Nakonfiguruje pořadí databáze při cílení na SQL Server.

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

Nakonfiguruje pořadí databáze při cílení na SQL Server.

ForSqlServerHasSequence(ModelBuilder, String, String)

Nakonfiguruje pořadí databáze při cílení na SQL Server.

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

Nakonfiguruje pořadí databáze při cílení na SQL Server.

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

Nakonfiguruje pořadí databáze při cílení na SQL Server.

ForSqlServerHasSequence(ModelBuilder, Type, String, String)

Nakonfiguruje pořadí databáze při cílení na SQL Server.

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

Nakonfiguruje pořadí databáze při cílení na SQL Server.

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

Nakonfiguruje pořadí databáze při cílení na SQL Server.

ForSqlServerHasSequence<T>(ModelBuilder, String, String)

Nakonfiguruje pořadí databáze při cílení na SQL Server.

ForSqlServerUseIdentityColumns(ModelBuilder, Int32, Int32)
Zastaralé.

Nakonfiguruje model tak, aby při cílení na SQL Server používal funkci SQL Server IDENTITY ke generování hodnot vlastností klíče označených jako OnAdd. Toto je výchozí chování při cílení na SQL Server.

ForSqlServerUseIdentityColumns(ModelBuilder)

Nakonfiguruje model tak, aby při cílení na SQL Server používal funkci SQL Server IDENTITY ke generování hodnot vlastností klíče označených jako OnAdd. Toto je výchozí chování při cílení na SQL Server.

ForSqlServerUseSequenceHiLo(ModelBuilder, String, String)
Zastaralé.

Nakonfiguruje model tak, aby při cílení na SQL Server použil vzor hi-lo založený na sekvenci k vygenerování hodnot pro vlastnosti klíče označené jako OnAdd.

GetInfrastructure<T>(IInfrastructure<T>)

Získá hodnotu z vlastnosti, která je skryta pomocí IInfrastructure<T>.

Tuto metodu obvykle používají poskytovatelé databáze (a další rozšíření). Obvykle se nepoužívá v kódu aplikace.

HasAutoscaleThroughput(ModelBuilder, Nullable<Int32>)

Nakonfiguruje nabídku zřízené propustnosti automatického škálování.

HasDatabaseMaxSize(ModelBuilder, String)

Nakonfiguruje maximální velikost pro Azure SQL Database.

HasDbFunction(ModelBuilder, MethodInfo, Action<DbFunctionBuilder>)

Konfiguruje funkci databáze při cílení na relační databázi.

HasDbFunction(ModelBuilder, MethodInfo)

Konfiguruje funkci databáze při cílení na relační databázi.

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

Konfiguruje funkci databáze při cílení na relační databázi.

HasDefaultContainer(ModelBuilder, String)

Nakonfiguruje výchozí název kontejneru, který se použije, pokud není explicitně nakonfigurovaný žádný název pro typ entity.

HasDefaultFullTextLanguage(ModelBuilder, String)

Nakonfiguruje výchozí jazyk pro fulltextové vyhledávání v oboru databáze.

HasDefaultSchema(ModelBuilder, String)

Nakonfiguruje výchozí schéma, ve které by se měly vytvářet databázové objekty, pokud není explicitně nakonfigurované žádné schéma.

HasDiscriminatorInJsonIds(ModelBuilder, Nullable<Boolean>)

Zahrnuje diskriminující hodnotu typu entity v hodnotě JSON "ID". Toto bylo výchozí chování před EF Core 9.

HasFullTextCatalog(ModelBuilder, String)

Nakonfiguruje fulltextový katalog v modelu.

HasManualThroughput(ModelBuilder, Nullable<Int32>)

Nakonfiguruje nabídku ruční zřízené propustnosti.

HasPerformanceLevel(ModelBuilder, String)

Nakonfiguruje úroveň výkonu (SERVICE_OBJECTIVE) pro Azure SQL Database jako řetězcový literál.

HasPerformanceLevelSql(ModelBuilder, String)

Nakonfiguruje úroveň výkonu (SERVICE_OBJECTIVE) pro Azure SQL Database jako výraz SQL.

HasRootDiscriminatorInJsonId(ModelBuilder, Nullable<Boolean>)

Zahrnuje diskriminující hodnotu typu kořenové entity v hodnotě JSON "ID". To umožňuje ukládání typů se stejným primárním klíčem do stejného kontejneru, ale stále umožňuje použít "ReadItem" pro vyhledávání neznámého typu.

HasSequence(ModelBuilder, String, Action<RelationalSequenceBuilder>)

Konfiguruje sekvenci databáze při cílení na relační databázi.

HasSequence(ModelBuilder, String, Action<SequenceBuilder>)

Konfiguruje sekvenci databáze při cílení na relační databázi.

HasSequence(ModelBuilder, String, Action<SequenceBuilder>)

Konfiguruje sekvenci databáze při cílení na relační databázi.

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

Konfiguruje sekvenci databáze při cílení na relační databázi.

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

Konfiguruje sekvenci databáze při cílení na relační databázi.

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

Konfiguruje sekvenci databáze při cílení na relační databázi.

HasSequence(ModelBuilder, String, String)

Konfiguruje sekvenci databáze při cílení na relační databázi.

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

Konfiguruje sekvenci databáze při cílení na relační databázi.

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

Konfiguruje sekvenci databáze při cílení na relační databázi.

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

Konfiguruje sekvenci databáze při cílení na relační databázi.

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

Konfiguruje sekvenci databáze při cílení na relační databázi.

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

Konfiguruje sekvenci databáze při cílení na relační databázi.

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

Konfiguruje sekvenci databáze při cílení na relační databázi.

HasSequence(ModelBuilder, Type, String, String)

Konfiguruje sekvenci databáze při cílení na relační databázi.

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

Konfiguruje sekvenci databáze při cílení na relační databázi.

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

Konfiguruje sekvenci databáze při cílení na relační databázi.

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

Konfiguruje sekvenci databáze při cílení na relační databázi.

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

Konfiguruje sekvenci databáze při cílení na relační databázi.

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

Konfiguruje sekvenci databáze při cílení na relační databázi.

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

Konfiguruje sekvenci databáze při cílení na relační databázi.

HasSequence<T>(ModelBuilder, String, String)

Konfiguruje sekvenci databáze při cílení na relační databázi.

HasServiceTier(ModelBuilder, String)

Nakonfiguruje úroveň služby (EDITION) pro Azure SQL Database jako řetězcový literál.

HasServiceTierSql(ModelBuilder, String)

Nakonfiguruje úroveň služby (EDITION) pro Azure SQL Database jako výraz SQL.

HasShadowIds(ModelBuilder, Nullable<Boolean>)

Vynutí, aby sestavení modelu vždy vytvořilo stínovou vlastnost __id namapovanou na ID JSON. Toto bylo výchozí chování před EF Core 9.0.

UseCollation(ModelBuilder, String)

Nakonfiguruje kolaci databáze, kterou budou používat všechny sloupce bez explicitní kolace.

UseHiLo(ModelBuilder, String, String)

Nakonfiguruje model tak, aby při cílení na SQL Server použil vzor hi-lo založený na sekvenci k vygenerování hodnot pro vlastnosti klíče označené jako OnAdd.

UseIdentityColumns(ModelBuilder, Int32, Int32)

Nakonfiguruje model tak, aby při cílení na SQL Server používal funkci SQL Server IDENTITY ke generování hodnot vlastností klíče označených jako OnAdd. Toto je výchozí chování při cílení na SQL Server.

UseIdentityColumns(ModelBuilder, Int64, Int32)

Nakonfiguruje model tak, aby při cílení na SQL Server používal funkci SQL Server IDENTITY ke generování hodnot vlastností klíče označených jako OnAdd. Toto je výchozí chování při cílení na SQL Server.

UseKeySequences(ModelBuilder, String, String)

Nakonfiguruje model tak, aby při cílení na SQL Server použil sekvenci podle hierarchie a vygeneroval hodnoty pro vlastnosti klíče označené jako OnAdd.

UseNamedDefaultConstraints(ModelBuilder, Boolean)

Nakonfiguruje model tak, aby používal pojmenovaná výchozí omezení.

Platí pro