Jegyzet
Az oldalhoz való hozzáférés engedélyezést igényel. Próbálhatod be jelentkezni vagy könyvtárat váltani.
Az oldalhoz való hozzáférés engedélyezést igényel. Megpróbálhatod a könyvtár váltását.
Az Azure SQL Database beállításai
Note
Az Azure SQL-hez való csatlakozáskor használja a metódustUseAzureSql a UseSqlServer helyett.
Az Azure SQL Database számos különböző díjszabási lehetőséget kínál, amelyek általában az Azure Portalon keresztül vannak konfigurálva. Ha azonban EF Core-migrálásokkal kezeli a sémát, konfigurálhatja a kívánt beállításokat az EF-vel, és azok az adatbázis létrehozásakor lesznek alkalmazva.
Az adatbázis szolgáltatási szintjét (EDITION) a HasServiceTier használatával adhatja meg:
modelBuilder.HasServiceTier("BusinessCritical");
Az adatbázis maximális méretét a HasDatabaseMaxSize használatával adhatja meg:
modelBuilder.HasDatabaseMaxSize("2 GB");
A HasPerformanceLevel használatával megadhatja az adatbázis (SERVICE_OBJECTIVE) teljesítményszintét:
modelBuilder.HasPerformanceLevel("BC_Gen4_1");
A HasPerformanceLevelSql használatával konfigurálja a rugalmas készletet, mivel az érték nem sztringkonstans:
modelBuilder.HasPerformanceLevelSql("ELASTIC_POOL ( name = myelasticpool )");
Tip
Az ALTER DATABASE dokumentációjában megtalálja az összes támogatott értéket.
SaveChanges, triggerek és az OUTPUT záradék
Amikor az EF Core menti az adatbázis módosításait, a T-SQL OUTPUT záradék használatával optimalizált technikával teszi ezt. Sajnos az OUTPUT záradék bizonyos korlátozásokkal rendelkezik; különösen nem használható például eseményindítókkal rendelkező táblákkal.
Ha az OUTPUT záradék használatával kapcsolatos korlátozásba ütközik, letilthatja azt egy adott táblában a következővel UseSqlOutputClause:
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Blog>()
.ToTable(tb => tb.UseSqlOutputClause(false));
}
Ezzel az EF egy régebbi, kevésbé hatékony módszerre vált a táblázat frissítéséhez.
Ha a legtöbb vagy az összes tábla rendelkezik eseményindítókkal, ezt az alábbi modellépítési konvencióval konfigurálhatja a modell összes táblájához:
public class NoOutputClauseConvention : IModelFinalizingConvention
{
public virtual void ProcessModelFinalizing(
IConventionModelBuilder modelBuilder,
IConventionContext<IConventionModelBuilder> context)
{
foreach (var entityType in modelBuilder.Metadata.GetEntityTypes())
{
var table = StoreObjectIdentifier.Create(entityType, StoreObjectType.Table);
if (table is not null)
{
entityType.Builder.UseSqlOutputClause(false);
}
foreach (var fragment in entityType.GetMappingFragments(StoreObjectType.Table))
{
entityType.Builder.UseSqlOutputClause(false, fragment.StoreObject);
}
}
}
}
Ez gyakorlatilag meghívja a modell minden tábláján a UseSqlOutputClause utasítást, így Önnek nem kell manuálisan elvégeznie minden egyes tábla esetében.