EF Core 11 Cheat Sheet
Die Teile von EF Core 11, die man sich merken sollte.
Diese Website nutzt Walter, einen KI-Agenten, für Recherche, Texte und Pflege. Redaktion und Überprüfung
Dieses Thema ist ein laufender Index aller Beiträge zu EF Core 11 - neue Abfragefeatures, Vector Search über DiskANN-Indizes, Performance-Arbeit und Migrationsnotizen aus EF Core 8, 9 oder 10.
Womit anfangen
Wenn Sie EF Core bereits kennen und nur die Delta wollen, überfliegen Sie die Beiträge mit dem Tag “ef core 11”. Wenn Sie eine Migration planen, enthalten die Beiträge mit Migration-Tag Breaking Changes und die genauen dotnet ef-Kommandos, die ich verwendet habe.
Was auf dieser Seite steht
Die Liste unten sammelt automatisch alle Beiträge mit einem der Tags: ef core, efcore, entity framework, ef core 11, efcore 11. Neueste zuerst.
Index (105 Beiträge)
2026 / 10
- Fix: The property 'X' is part of a key and so cannot be modified or marked as modified in EF Core
EF Core ändert nie einen Schlüsselwert an einer verfolgten Entität. Hören Sie auf, den Schlüssel aus DTOs zu kopieren, verwenden Sie statt eines Alternativschlüssels einen eindeutigen Index und ändern Sie einen echten Schlüssel, indem Sie eine neue Zeile einfügen und die alte löschen. Getestet mit EF Core 10.0.14.
- Getrennte Migrations-Ordner für mehrere DbContexts in einem EF Core-Projekt führen
Übergeben Sie --output-dir einmal pro DbContext, und EF Core legt jede weitere Migration in diesem Ordner und Namespace ab. Warum das Standardlayout unsymmetrisch ist, die CS0111-Kollision bei einem gemeinsamen Ordner, wie Sie vorhandene Migrationen verschieben und wann Sie die Verlaufstabelle aufteilen sollten.
- Wie man eine selbstreferenzierende Many-to-Many-Beziehung (Followers/Following) in EF Core konfiguriert
Followers und Following auf einer einzelnen User-Entität in EF Core 11 modellieren: was die Konvention erzeugt, warum SQL Server einen Join-Fremdschlüssel stillschweigend zu ClientCascade macht, wie man eine explizite Follow-Join-Entität mit Zeitstempel abbildet und wie man einen User ohne Fehler 547 oder 1785 löscht.
- Was entscheidet, ob EF Core eine SQL-Server-Spalte `date` als `DateOnly` oder `DateTime` scaffoldet?
Die EF-Core-Version des SQL-Server-Providers in Ihrem Startprojekt entscheidet: EF Core 7 und früher scaffolden date als DateTime, EF Core 8 bis 11 als DateOnly. Hier sind das Type Mapping, das diese Wahl trifft, gemessene Ausgaben von EF Core 7, 8, 10 und 11 RC 2 sowie zwei Wege, DateTime zurückzubekommen, ohne die Spalte stillschweigend auf datetime2 umzustellen.
- Fix: NU1608 / NU1107 Versionskonflikt zwischen Pomelo.EntityFrameworkCore.MySql und EF Core 10
Pomelo 9.0.0 erlaubt nur EF Core Relational 9.0.x und hat keinen Build für EF Core 10. Halten Sie alle EF-Core-Pakete auf 9.0.x oder wechseln Sie zu Microting.EntityFrameworkCore.MySql 10.0.x. Wer die Warnung unterdrückt, bekommt einen Absturz beim Start.
- Fix: Settings file 'DotnetToolSettings.xml' was not found in the package
Das Tool-Paket zielt auf ein neueres .NET als das SDK, das die Installation ausführt, oder es ist gar kein .NET-Tool. Verwenden Sie ein neueres SDK, pinnen Sie eine Tool-Version mit kompatiblem tools-Ordner oder erzwingen Sie --framework.
- So prüfen Sie in EF Core, ob eine Entität bereits vom DbContext verfolgt wird, bevor Sie sie anfügen
Mit DbSet.Local.FindEntry(key) fragen Sie den Change Tracker, ob eine Entität mit einem bestimmten Schlüssel verfolgt wird, ohne Datenbankzugriff und ohne Scan. Warum Entry(entity).State bei dieser Frage in die Irre führt, warum Find eine Abfrage ausführt, und ein getesteter AttachOrMerge-Helper für EF Core 10.
- Was ist ein Compiled Model in EF Core 11, und wann lohnt sich die Aktivierung?
Ein Compiled Model ist generierter C#-Code, der Ihr EF Core Modell ohne Ausführung von OnModelCreating neu aufbaut. Gemessen mit EF Core 11 RC1: Das Laden des Modells sinkt bei 500 Entitäten von 714 ms auf 215 ms, aber der MSBuild-Weg (der EFOptimizeContext ersetzt hat) ist langsamer, veraltete Modelle schlagen unbemerkt fehl und Query Filter verhindern die Generierung.
- Was ist eine Shadow Property in EF Core 11, und warum taucht eine in meiner Migration auf?
Eine Shadow Property ist eine Spalte, die EF Core ohne passende CLR-Eigenschaft verfolgt. Hier steht, warum EF Core 11 sie erzeugt (fehlende FK-Eigenschaften, falsch benannte FKs, Typkonflikte, doppelt konfigurierte Beziehungen), wie Sie die BlogId1-Variante in einer Migration erkennen, wie Sie jede Ursache beheben und wie Sie Shadow Properties gezielt einsetzen.
- AddDbContextPool vs AddDbContextFactory: EF Core-Abfragen parallel ausführen
AddDbContextPool liefert pro DI-Scope genau einen Scoped-DbContext und kann daher nicht zwei Abfragen gleichzeitig ausführen. AddDbContextFactory und AddPooledDbContextFactory liefern pro Aufruf einen Kontext, was parallele Abfragen brauchen. Gemessen mit EF Core 11 RC 1: Die gepoolte Factory erzeugt einen Kontext in 342 ns und 40 B gegenüber 17 us und 44 KB.
- Fix: Invalid column name 'Value' bei SqlQueryRaw<T> mit skalarem Ergebnis in EF Core
EF Core verpackt eine skalare SqlQuery<T> in eine Unterabfrage und wählt eine Spalte namens Value aus, sobald Sie First, Where, Max oder Single anhängen. Versehen Sie Ihre SQL-Spalte mit AS Value oder materialisieren Sie zuerst.
- Lösung: There is already an object named 'X' in the database nach dem Zurücksetzen der EF Core Migrationen
Nachdem der Migrations-Ordner gelöscht und ein neues InitialCreate erzeugt wurde, weiß EF Core nicht, dass Ihre Tabellen existieren. Löschen Sie eine Entwicklungsdatenbank oder tragen Sie die neue Migration in __EFMigrationsHistory ein, ohne sie auszuführen.
- So setzen Sie PostgreSQL-Sitzungsparameter wie search_path oder statement_timeout bei jeder EF Core Verbindung mit Npgsql
Ein einmal ausgeführtes SET wird von DISCARD ALL gelöscht, sobald Npgsql die Verbindung an den Pool zurückgibt. Legen Sie search_path und statement_timeout mit den Connection-String-Schlüsselwörtern Search Path und Options ins Startup-Paket, weichen Sie bei Bedarf auf ALTER ROLE oder einen ConnectionOpened-Interceptor aus, und erfahren Sie, warum UsePhysicalConnectionInitializer sein SET stillschweigend verliert.
- EF.Parameter vs. EF.Constant in EF Core 11 Abfragen
EF.Constant schreibt einen erfassten Wert als SQL-Literal in die Abfrage, EF.Parameter macht aus einem Literal einen SQL-Parameter. Belassen Sie die Standardeinstellungen von EF Core, nutzen Sie EF.Parameter, damit dynamisch gebaute Expression Trees nicht bei jedem Aufruf neu kompiliert werden, und EF.Constant nur für Werte mit wenigen Ausprägungen, deren Daten so schief verteilt sind, dass jeder Wert einen eigenen Plan braucht.
2026 / 09
- Fix: EF Core `Contains` auf einem `static readonly` `IList<T>` oder `ISet<T>` konnte nicht übersetzt werden
EF Core 8, 9 und 10 übersetzen Contains nicht, wenn die Liste ein static readonly Feld vom Typ IList, ICollection, ISet oder IReadOnlySet ist. Rufen Sie Enumerable.Contains explizit auf oder wechseln Sie auf EF Core 11.
- Einen eindeutigen Index für eine JSON-gemappte Eigenschaft in EF Core 11 anlegen (SQL Server und SQLite)
HasIndex(...).IsUnique() auf einem ToJson()-Member erzwingt in EF Core 11 RC 1 keine Eindeutigkeit: SQL Server verwirft IsUnique und SQLite indiziert das gesamte Dokument. Legen Sie den JSON-Wert stattdessen als berechnete Spalte offen und setzen Sie den eindeutigen Index darauf.
- Wie man mit EF Core und Npgsql atomar an ein PostgreSQL-jsonb-Array anhängt
Eine Entität laden, List.Add aufrufen und speichern schreibt das gesamte jsonb-Dokument neu und verliert gleichzeitige Anhänge stillschweigend. Verlagern Sie das Anhängen mit dem jsonb-Operator || in ein einziges UPDATE, entweder über ExecuteSqlAsync oder über eine gemappte Funktion in ExecuteUpdateAsync, und machen Sie es mit einem @>-Guard idempotent.
- Primärschlüssel in EF Core mit einer Oracle-Sequence erzeugen
Einen EF-Core-Schlüssel mit UseSequence in Oracle.EntityFrameworkCore 10 auf eine Oracle-Sequence abbilden: das DDL- und INSERT-SQL, das der Provider tatsächlich erzeugt, wie Sie auf eine vorhandene Sequence oder einen Legacy-Trigger verweisen, warum Quoting und HiLo zu Stolperfallen werden und wie Sie eine Identity-Spalte ohne ORA-00001 auf eine Sequence umstellen.
- Eigene Pluralisierung von Tabellennamen für dotnet ef dbcontext scaffold mit IPluralizer hinzufügen
Eine Tabelle namens Gas wird zu einer Entität namens Ga gescaffoldet. Ersetzen Sie den eingebauten Humanizer-Pluralizer durch einen eigenen IPluralizer, registrieren Sie ihn über IDesignTimeServices im Startprojekt, und erfahren Sie, warum TryAddSingleton dort stillschweigend nichts tut.
- Idempotente Nachrichtenverarbeitung mit EF Core 11 garantieren, wenn zwei App-Instanzen dieselbe Nachricht konsumieren
Die Existenzprüfung in Ihrem Handler ist nicht der Schutz, für den Sie sie halten. Legen Sie einen eindeutigen Index auf die Inbox-Tabelle, schreiben Sie den Marker im selben SaveChanges wie die fachliche Änderung, und lassen Sie die Datenbank den Gewinner bestimmen. Dazu die ExecuteUpdate-Falle, die all das stillschweigend aushebelt.
- Eigene Namenskonventionen für Primärschlüssel, Fremdschlüssel und Indizes in EF Core 11 Migrationen anwenden
Benennen Sie jedes PK_, FK_, AK_ und IX_, das EF Core 11 erzeugt, mit einer einzigen IModelFinalizingConvention um, lassen Sie explizite Namen weiterhin gewinnen, bleiben Sie unter der Längengrenze für Bezeichner und vermeiden Sie den Neuaufbau des Clustered Index, den die nächste Migration auf einer bestehenden Datenbank erzeugt.
- Eine EF Core Cosmos-App nach der Änderung am Escaping generierter ids in EF Core 11 migrieren
EF Core 11 escapt '/', '\', '?' und '#' in generierten Cosmos DB id-Werten nicht mehr, daher werden Dokumente, die EF Core 8-10 geschrieben hat, nicht mehr über den Schlüssel gefunden. Wie Sie herausfinden, ob Sie betroffen sind, wann Sie den Schalter EscapeIllegalCosmosIdCharacters setzen und wie Sie die ids mit einem Transactional Batch sicher neu schreiben.
- SQL Server Kompatibilitätsgrad 150 vs 160: Was sich für Abfragen in EF Core 11 ändert
EF Core 11 setzt UseSqlServer jetzt standardmäßig auf Kompatibilitätsgrad 160. Damit landen LEAST, GREATEST und LTRIM/RTRIM mit zwei Argumenten in Ihrem SQL, auch bei jedem Take(n).FirstOrDefault(). Bleiben Sie auf SQL Server 2022 und neuer bei 160; legen Sie UseCompatibilityLevel(150) fest, wenn noch irgendeine Umgebung SQL Server 2019 betreibt.
- Lösung: EF Core MigrateAsync und CanConnectAsync wiederholen 'Login failed for user' 60 Sekunden lang
Die Existenzprüfung von EF Core für SQL Server wiederholt Fehler 18456 eine volle Minute lang, mit oder ohne EnableRetryOnFailure. Schnell scheitern, RetryTimeout begrenzen oder auf EF Core 12 warten.
- Lösung: Could not load file or assembly 'Microsoft.Data.SqlClient, Version=7.0.0.0' nach dem Update von EF Core
EF Core 11 ist gegen Microsoft.Data.SqlClient 7.0.0.0 kompiliert, aber beim Restore oder Deployment hat sich eine 6.x-Kopie durchgesetzt. Entfernen Sie den alten SqlClient-Pin und stellen Sie die vollständige Ausgabe neu bereit.
- Lösung: InvalidOperationException: Nullable object must have a value in einer EF Core 11 Projektion
EF Core wirft diesen Fehler, wenn ein Select ein SQL-NULL in einen nicht nullbaren int, decimal oder DateTime liest. Casten Sie das Member auf seinen nullbaren Typ und ergänzen Sie ?? default, oder sichern Sie die Navigation mit einer Null-Prüfung ab.
- So escapen Sie die Platzhalter % und _ in EF.Functions.Like- und StartsWith-Abfragen in EF Core 11
StartsWith, EndsWith und Contains escapen % und _ in EF Core 11 bereits für Sie, EF.Functions.Like dagegen nicht. Hier sehen Sie das SQL, das EF erzeugt, einen wiederverwendbaren Escape-Helper und die escapeCharacter-Überladung, mit der es auf SQL Server, SQLite und PostgreSQL funktioniert.
- Native json-Spalte vs. nvarchar(max) zum Speichern von JSON in SQL Server mit EF Core 11
Verwenden Sie den nativen json-Typ auf SQL Server 2025 und Azure SQL: EF Core 11 holt daraus JSON_CONTAINS, typisiertes JSON_VALUE, In-place-modify() und JSON-Indizes heraus. Bleiben Sie bei nvarchar(max) für SQL Server 2019/2022, ältere Tools oder ein Schema, das Sie zurückrollen können müssen.
- Lösung: PublishAot zusammen mit EFOptimizeContext erschöpft den Speicher beim EF Core-Build
Die Modellgenerierung von EF Core zur Build-Zeit hat MSBuild immer wieder aufgerufen, bis der RAM voll war. Aktualisieren Sie Tasks und Design auf 10.0.10+ und entfernen Sie unter EF Core 11 EFOptimizeContext.
- Fix: AS JSON option can be specified only for column of nvarchar(max) type in WITH clause
EF Core erzeugt [col] json '$.path' AS JSON innerhalb von OPENJSON WITH, was Azure SQL mit Msg 13618 ablehnt. Aktualisieren Sie auf EF Core 10.0.11+ oder senken Sie die Kompatibilitätsstufe des Providers auf 160.
- Fix: Complex entry original ordinal '-1' is invalid beim Speichern einer ToJson-Complex-Collection
Aktualisieren Sie Microsoft.EntityFrameworkCore auf 10.0.10 oder neuer. Davor stürzte SaveChanges ab, wenn eine verschachtelte Collection unter einer zweiten ToJson-Complex-Property wuchs.
- Lösung: The complex type collection must be initialized to a non-null value
In EF Core 10.0.x bricht DetectChanges, wenn eine komplexe Eigenschaft mit einer zweielementigen Sammlung innerhalb einer ToJson-Sammlung auf null gesetzt wird. Behoben in 11.0.0-rc.1.
- Fix: MissingMethodException 'AbstractionsStrings.ArgumentIsEmpty' nach dem Upgrade der EF Core Tools
dotnet ef wirft MissingMethodException bei ArgumentIsEmpty, weil Tools 10.0.6 kein passendes Microsoft.EntityFrameworkCore.Design mehr mitzieht. Design explizit auf Ihre EF Core Version fixieren.
- Pessimistisches Sperren mit UPDLOCK und SELECT ... FOR UPDATE in EF Core 11
EF Core 11 hat immer noch keine Sperr-API. So nehmen Sie eine echte Zeilensperre mit FromSql: WITH (UPDLOCK, ROWLOCK) auf SQL Server, FOR UPDATE auf PostgreSQL, die Unterabfragen-Falle, die die Sperre unbemerkt ausweitet, NOWAIT und SKIP LOCKED, Deadlock-Wiederholungen und was zu tun ist, wenn die Zeile noch nicht existiert.
- Wie Sie einen EF Core 11 Value Converter schreiben, der ein null aus der Datenbank auf einen Nicht-null-Wert im Code abbildet
EF Core übergibt standardmäßig niemals null an einen Value Converter. Hier ist der interne convertsNulls-Konstruktor, der das ändert, der IsRequired(false)-Aufruf, von dem er abhängt, warum er für Enums und andere Werttypen nicht funktionieren kann, die WHERE col = NULL Falle, die er erzeugt, und die zwei Muster, die die Aufgabe ohne interne API lösen.
- Was ist ein EF Core Interceptor und wann brauchen Sie einen?
Ein EF Core Interceptor ist eine Klasse, die EF vor und nach Operationen wie dem Ausführen eines Befehls oder SaveChanges aufruft und die diese verändern oder unterdrücken kann, nicht nur beobachten. Hier sind die sieben Interception-Punkte in EF Core 11, die Registrierungs- und Lebensdauerregeln und die Fälle, in denen ein Query-Filter oder schlichte Protokollierung die bessere Antwort ist.
2026 / 08
- Fix: 23505: duplicate key value violates unique constraint bei einem nebenläufigen EF-Core-Insert
Das Prüfen-dann-Einfügen in Ihrem Handler ist nicht atomar. Fangen Sie PostgresException mit SqlState 23505 ab, oder fassen Sie alles in einer einzigen INSERT ... ON CONFLICT-Anweisung zusammen. EnableRetryOnFailure hilft nicht.
- Fix: CREATE DATABASE permission denied in database 'master' beim Ausführen von dotnet ef database update
Migrate() von EF Core prüft immer, ob die Datenbank existiert, und legt sie andernfalls über eine fest im Code verdrahtete master-Verbindung an. Vergeben Sie CREATE ANY DATABASE, reparieren Sie den Zugriff des Logins auf die vorhandene Datenbank, oder liefern Sie ein idempotentes SQL-Skript.
- Lösung: Model building is not supported when publishing with NativeAOT in einem .NET MAUI iOS Build
iOS Builds setzen DynamicCodeSupport=false, deshalb verweigert EF Core den Modellaufbau, auch wenn Sie NativeAOT nie aktiviert haben. Liefern Sie ein kompiliertes Modell plus vorkompilierte Abfragen aus, oder schalten Sie den Interpreter wieder ein.
- Wiederverwendbare LINQ-Prädikate schreiben, die EF Core in Where, Select und OrderBy übersetzen kann
Eine bool-Hilfsmethode wirft "could not be translated". Ein Expression<Func<T, bool>> nicht. So komponieren, verschachteln und wiederverwenden Sie Expression Trees in EF Core 11 ohne LINQKit, mit dem echten SQL zu jedem Fall.
- Lösung: "An exception was thrown while attempting to evaluate a LINQ query parameter expression" in EF Core 11
EF Core wirft dies, wenn ein clientseitig ausgewerteter Teil Ihrer Abfrage bei der Auswertung fehlschlägt. Lesen Sie InnerException, aktivieren Sie EnableSensitiveDataLogging und ziehen Sie die Null-Prüfung aus dem Lambda heraus.
- So erzeugen Sie einen Primärschlüssel beim Insert aus einer Datenbanksequenz in EF Core 11
Einen Schlüssel in EF Core 11 mit UseSequence von IDENTITY auf eine SQL Server-Sequenz umstellen: das exakte SQL, das EF erzeugt, warum explizite Schlüsselwerte plötzlich ohne IDENTITY_INSERT funktionieren, die bigint-Sequenz an einer int-Spalte und die Lücken, die Sie einplanen müssen.
- IDbContextFactory<T> aus einem Singleton-Service in Blazor verwenden
Ein Singleton kann keinen DbContext injizieren, wohl aber IDbContextFactory<T>, denn AddDbContextFactory registriert die Factory standardmäßig als Singleton. Erzeugen und entsorgen Sie einen Kontext pro Aufruf und speichern Sie die Instanz niemals.
- Fix: dotnet tool install --global dotnet-ef wirft einen Fehler
Alle Arten, auf die dotnet tool install --global dotnet-ef im .NET 10 SDK fehlschlägt, mit der exakten Meldung und dem Exit-Code zu jeder: bereits installiert, Version nicht gefunden, Downgrade blockiert, Shim-Konflikt, totes NuGet-Feed und die Laufzeit-Diskrepanz, die erst nach erfolgreicher Installation zuschlägt.
- Eine Stored Procedure aufrufen und ihre Ergebnisse in EF Core 11 mappen
Verwenden Sie FromSql auf einem DbSet, wenn die Prozedur vollständige Entitätszeilen liefert, Database.SqlQuery<T> bei einer Projektion und ExecuteSql, wenn sie nichts liefert. Verketten Sie niemals einen LINQ-Operator auf ein EXEC, und lesen Sie einen Ausgabeparameter nie, bevor der Reader freigegeben wurde.
- Wie Sie eine Tabelle in einer EF Core 11 Migration umbenennen, ohne Daten zu verlieren
EF Core erzeugt RenameTable, wenn Sie den Tabellennamen ändern, aber DropTable plus CreateTable, wenn Sie die Entitätsklasse umbenennen. Hier steht, wie Sie beide Fälle unterscheiden, der ToTable-Trick, der eine Klassenumbenennung kostenlos macht, und der Spaltenumbenennungs-Bug, der Ihre Daten stillschweigend vertauscht.
- WebApplicationFactory vs Testcontainers für Integrationstests in ASP.NET Core
Die passende Umgebung für ASP.NET-Core-Integrationstests nach Prüfziel auswählen: HTTP-Routing, Verhalten der Produktionsdatenbank oder veröffentlichtes App-Image.
- Optimistische Nebenläufigkeit mit einem rowversion-Token in EF Core 11 implementieren
Ein rowversion-Concurrency-Token in EF Core 11 einrichten: die Konfiguration mit [Timestamp] und IsRowVersion, das SQL, das EF tatsächlich erzeugt, DbUpdateConcurrencyException abfangen, Datenbank gewinnt vs Client gewinnt vs Merge, getrennte APIs mit ETags und die fünf Fallen, die alles unbemerkt aushebeln.
- Wie man ein Enum in EF Core 11 mit einem Value Converter als String speichert
C#-Enums in EF Core 11 als lesbare Strings statt als Ints speichern: HasConversion, Massenkonfiguration für alle Enums, die nvarchar(max)-Falle, das Sortierproblem und die Migration einer bestehenden int-Spalte.
2026 / 07
- Lösung: Your startup project doesn't reference Microsoft.EntityFrameworkCore.Design
Fügen Sie Microsoft.EntityFrameworkCore.Design dem Startprojekt hinzu, das dotnet ef kompiliert, nicht dem Projekt mit Ihrem DbContext, und übergeben Sie -s in geschichteten Solutions.
- Lösung: "The model for context 'X' has pending changes" in EF Core 11
EF Core wirft PendingModelChangesWarning, wenn das Modell nicht mehr zum letzten Migrations-Snapshot passt. Migration hinzufügen oder den Fehlalarm beheben.
- EF Core 11 Migrationen in Produktion anwenden mit dotnet ef migrations bundle
Ein vollständiger Leitfaden zur Bereitstellung von EF Core 11 Schemaänderungen mit Migration Bundles: efbundle in der CI kompilieren, die appsettings.json-Falle bei benannten Verbindungszeichenfolgen, self-contained Bundles und der musl-RID von Alpine, Migration Locking seit EF Core 9, Rollback über eine Zielmigration und warum Transaktionen pro Migration Sie unter MySQL nicht retten.
- Complex Types vs. Owned Entities in EF Core 11: wofür sollten Sie sich entscheiden?
Nutzen Sie in EF Core 11 standardmäßig Complex Types für Value Objects und greifen Sie nur dann zu Owned Entities, wenn Sie eine separate Tabelle oder eine als eigene Zeilen abgebildete Collection benötigen.
- TPH vs TPT vs TPC beim Vererbungsmapping in EF Core 11: Was sollten Sie wählen?
In EF Core 11 verwenden Sie standardmäßig TPH für fast jede Hierarchie, greifen nur zu TPC, wenn Sie überwiegend einen einzelnen Blatttyp abfragen und ein Benchmark den Vorteil belegt, und nutzen TPT nur, wenn eine externe Vorgabe es erzwingt.
- Lösung: System.InvalidOperationException: Sequence contains no elements
Diese Exception bedeutet, dass Sie .First() oder .Single() auf einer leeren Sequenz aufgerufen haben. Nutzen Sie FirstOrDefault/SingleOrDefault mit null-Prüfung, sichern Sie die Abfrage ab oder beheben Sie, warum die Quelle leer ist.
- So protokollieren Sie das SQL, das EF Core 11 generiert
Sehen Sie das exakte SQL, das Entity Framework Core 11 an Ihre Datenbank sendet, mit Parameterwerten, per LogTo, Microsoft.Extensions.Logging und ToQueryString.
- Lösung: "The property could not be mapped, because it is not a supported primitive type or a valid entity type" in EF Core 11
EF Core ist auf eine Eigenschaft gestoßen, die es nicht speichern kann. Mappen Sie sie als Complex Type, konvertieren Sie sie mit HasConversion, geben Sie ihr einen Schlüssel oder ignorieren Sie sie mit [NotMapped].
- Table-per-Hierarchy-Vererbungsmapping (TPH) in EF Core 11 konfigurieren
TPH ist die Standard-Vererbungsstrategie von EF Core: eine Tabelle, eine Diskriminatorspalte. So konfigurieren Sie den Diskriminator, teilen Spalten, behandeln nullbare abgeleitete Eigenschaften und kennen die Fallstricke in EF Core 11.
- Wie man in EF Core 11 einen komplexen Typ statt einer Owned Entity abbildet
Owned Entities tragen einen versteckten Schlüssel und eine Referenzidentität, die mit Value Objects im Konflikt steht. So bilden Sie ein Value Object in EF Core 11 als komplexen Typ ab, wann Sie wechseln sollten und welche Fallstricke es gibt.
- Vom HasData-Seeding zu UseAsyncSeeding in EF Core 11 migrieren
Eine Schritt-fuer-Schritt-Anleitung, um Seed-Daten von HasData auf UseSeeding und UseAsyncSeeding in EF Core 11 umzustellen, inklusive der DeleteData-Migrationsfalle, die Ihre vorhandenen Zeilen loescht, wenn Sie sie uebersehen.
- Benannte Abfragefilter vs ein einzelner globaler Abfragefilter in EF Core 11: Was sollten Sie verwenden?
Beide erzeugen dasselbe SQL. Greifen Sie nur dann zu benannten Filtern, wenn Sie ein Prädikat unabhängig deaktivieren müssen; ein einzelner kombinierter Filter ist für ein einzelnes Anliegen in EF Core 11 einfacher.
- Lösung: "The LINQ expression could not be translated" in EF Core 11
EF Core 11 wirft diese Ausnahme, wenn ein Where oder OrderBy eine Methode aufruft, die es nicht in SQL umsetzen kann. Schreiben Sie das Prädikat mit übersetzbaren Operatoren um, oder holen Sie die Daten zuerst mit AsEnumerable auf den Client.
- Fix: "The required column 'X' was not present in the results of a 'FromSql' operation" in EF Core 11
EF Core wirft dies, wenn Ihr rohes SQL nicht alle von der Entität gemappten Spalten zurückgibt oder die Namen nicht übereinstimmen. Geben Sie alle gemappten Spalten mit passenden Namen zurück, oder fragen Sie einen skalaren oder schlüssellosen Typ ab.
- Benannte Query-Filter für Soft Delete und Multi-Tenancy in EF Core 11 verwenden
Wenden Sie zwei unabhängige globale Query-Filter auf dieselbe Entität in EF Core 11 an: einen Soft-Delete-Filter und einen Tenant-Filter, jeweils benannt, sodass Sie einen ohne den anderen per IgnoreQueryFilters deaktivieren können.
2026 / 06
- HasData vs UseSeeding fuer das Seeding von Daten in EF Core 11: was sollten Sie verwenden?
Verwenden Sie HasData nur fuer feste, modelleigene Referenzdaten. Verwenden Sie UseSeeding und UseAsyncSeeding fuer alles andere in EF Core 11. Ein direkter Vergleich mit den Regeln, die die Entscheidung erzwingen.
- Fix: FOREIGN KEY constraint failed beim Löschen einer Entität in EF Core 11
EF Core wirft FOREIGN KEY constraint failed, weil das übergeordnete Element noch abhängige Zeilen hat, die die Datenbank nicht verwaisen lässt. Laden Sie die Kinder, machen Sie die Beziehung optional oder konfigurieren Sie OnDelete.
- Fix: No service for type 'Microsoft.EntityFrameworkCore.DbContextOptions' has been registered
EF Core wirft dies, wenn AddDbContext nie lief, nach Build lief oder der Konstruktor des Kontexts die falschen DbContextOptions erhält. Registrieren Sie vor Build und verwenden Sie DbContextOptions<IhrKontext>.
- Fix: The seed entity for entity type 'X' cannot be added because a non-zero value is required for property 'Id'
HasData befüllt eine Entität mit vom Speicher generiertem Schlüssel, aber ohne expliziten Wert. Geben Sie jeder Zeile einen stabilen Id-Wert ungleich null, oder nutzen Sie UseSeeding.
- Keyset- (Cursor-)Pagination in EF Core 11
Ersetzen Sie Skip/Take durch eine WHERE-Klausel, die hinter die zuletzt gesehene Zeile springt. Sortieren Sie nach einem vollständig eindeutigen Schlüssel, tragen Sie die Werte der letzten Zeile als Cursor mit, und EF Core 11 macht aus der nächsten Seite einen Index-Seek statt eines OFFSET-Scans.
- JSON-Spalten in EF Core 11 mappen und abfragen
Mappen Sie einen verschachtelten Typ mit ComplexProperty(...).ToJson() auf eine einzelne JSON-Spalte, lassen Sie EF Core 11 ihn im nativen json-Datentyp von SQL Server 2025 speichern und fragen Sie ihn dann mit LINQ ab, das zu JSON_VALUE, JSON_CONTAINS und JSON_PATH_EXISTS übersetzt wird.
- Eine Many-to-Many-Beziehung in EF Core 11 mit Seed-Daten befüllen
Befüllen Sie die Join-Tabelle einer Many-to-Many-Beziehung in EF Core 11: die impliziten Shadow-Keys, die Sie selbst benennen müssen, das UsingEntity-HasData-Muster und die UseSeeding-Alternative zur Laufzeit, die mit Skip-Navigations funktioniert.
- Daten mit UseSeeding und UseAsyncSeeding in EF Core 11 seeden
Referenzdaten in EF Core 11 richtig seeden mit UseSeeding und UseAsyncSeeding: wo Sie sie konfigurieren, wann sie laufen, die Idempotenzprüfung, die Sie nicht weglassen dürfen, und warum Sie beide implementieren müssen.
- AsNoTracking vs AsNoTrackingWithIdentityResolution in EF Core 11: welche sollten Sie verwenden?
Verwenden Sie AsNoTracking standardmäßig für schreibgeschützte Abfragen. Greifen Sie nur dann zu AsNoTrackingWithIdentityResolution, wenn der Ergebnisgraph dieselbe Entität mehrfach enthält und Ihr Code darauf angewiesen ist, eine einzige gemeinsam genutzte Instanz zu erhalten.
- Der neue EF1004-Analyzer in EF Core 11 erkennt einen stillen Async-Fehler
EF Core 11 Preview 5 liefert den EF1004-Analyzer. Er markiert ToAsyncEnumerable() auf einem IQueryable, damit Sie eine Datenbankabfrage nicht versehentlich synchron in einem await foreach durchlaufen.
- Lösung: The entity type 'X' requires a primary key to be defined in EF Core 11
EF Core findet keinen Schlüssel für Ihren Typ. Benennen Sie eine Eigenschaft Id oder {Type}Id, ergänzen Sie [Key], rufen Sie HasKey auf oder, bei einer View oder rohem SQL, HasNoKey.
- Lösung: The configured execution strategy 'SqlServerRetryingExecutionStrategy' does not support user-initiated transactions
EnableRetryOnFailure steht im Konflikt mit BeginTransaction. Kapseln Sie die gesamte Transaktion in db.Database.CreateExecutionStrategy().ExecuteAsync(...), damit sie als eine Einheit wiederholt wird.
- EF Core 11 Interceptors für Auditing verwenden
Stempeln Sie CreatedBy/ModifiedOn-Spalten und schreiben Sie einen vollständigen Änderungsverlauf mit einem ISaveChangesInterceptor in EF Core 11, inklusive DI-Lebensdauer, aktuellem Benutzer und ExecuteUpdate-Fallstricken.
- EF Core ExecuteUpdate versus Entitäten laden und SaveChanges: Was sollten Sie verwenden?
Ein Entscheidungsleitfaden und ein echter Benchmark für EF Core 11: Verwenden Sie ExecuteUpdate für mengenbasierte Schreibvorgänge per Prädikat und den Weg Laden-dann-SaveChanges nur, wenn Sie den Change Tracker, Interceptoren oder einen komplexen Objektgraphen benötigen.
- Von EF Core 6 auf EF Core 11 migrieren: die Breaking Changes, die wirklich wehtun
Ein versionsgenauer Migrationsleitfaden von EF Core 6.0 auf EF Core 11.0, der die Breaking Changes von EF7, 8, 9, 10 und 11 durchgeht, die echte Apps brechen: Encrypt=True, Contains mit OPENJSON, PendingModelChangesWarning, die native json-Spalte und die Aufteilung von SqlClient 7.0.
- Lösung: ObjectDisposedException: Cannot access a disposed context instance
Ihre Fire-and-Forget-Task hat einen anfragebezogenen DbContext erfasst, den der DI-Scope bereits freigegeben hatte. Lösen Sie innerhalb der Task einen frischen Kontext mit IServiceScopeFactory oder IDbContextFactory auf.
- EF Core 11 Preview 4: Schluss mit dem Wiedereintippen von --project und --startup-project dank .config/dotnet-ef.json
EF Core 11 Preview 4 erlaubt es dem dotnet-ef-Tool, Standardwerte für Optionen aus einer .config/dotnet-ef.json-Datei zu lesen, sodass aufgeteilte Solutions Sie nicht mehr zwingen, --project und --startup-project bei jedem Befehl anzugeben.
- So vermeiden Sie mit Query Splitting eine kartesische Explosion in EF Core 11
Wenn Sie zwei gleichrangige Collections per Include laden, gibt EF Core 11 das Kreuzprodukt zurück und Ihre Zeilenzahl explodiert. So behebt AsSplitQuery das Problem, so aktivieren Sie es global, und das sind die Konsistenz- und Sortierfallen, die Sie beachten sollten.
2026 / 05
- ExecuteUpdate und ExecuteDelete für Massenschreibvorgänge in EF Core 11 verwenden
Ein vollständiger Leitfaden zu ExecuteUpdate und ExecuteDelete in EF Core 11: das erzeugte SQL, die Falle des Change Trackers, die Ihren Massenschreibvorgang stillschweigend überschreibt, Transaktionen, Concurrency-Kontrolle über die Anzahl betroffener Zeilen und die Delegate-Setter aus EF Core 10, mit denen sich bedingte Updates über einfache if-Anweisungen erstellen lassen.
- EF Core 11 Preview 4: Periodenspalten temporaler Tabellen können endlich echte Eigenschaften sein
EF Core 11 Preview 4 hebt die langjährige Shadow-Property-Beschränkung für SQL-Server-temporale-Tabellen auf. PeriodStart und PeriodEnd können jetzt reguläre CLR-Eigenschaften sein, konfiguriert mit stark typisierten HasPeriodStart- und HasPeriodEnd-Lambdas.
- EF Core kompilierte Abfragen vs Raw SQL vs Dapper: Was gewinnt auf dem Lesepfad?
Fuer leselastige Pfade in .NET 11 liegt reines EF Core mit AsNoTracking innerhalb von ~5% von Dapper. Greifen Sie zu kompilierten Abfragen auf einem profilierten Einzelzeilen-Hot-Path und zu Dapper nur fuer geringste Latenz oder fuer SQL, das LINQ nicht ausdruecken kann.
- IEnumerable vs IAsyncEnumerable vs IQueryable in C#: Was sollte die Methode zurückgeben?
Drei Sequenz-Interfaces, drei Ausführungsmodelle. Verwenden Sie IQueryable, wenn eine Datenbank die Abfrage übersetzen kann, IAsyncEnumerable, wenn der Producer asynchron ist und Sie streamen möchten, IEnumerable für alles andere im Speicher.
- EF Core 11 vs. Dapper für Bulk-Inserts: echtes Benchmark
Für Bulk-Inserts in .NET 11 gewinnt weder EF Core noch Dapper. SqlBulkCopy gewinnt. Das ist das Benchmark, das Warum und der Platz, den jedes Werkzeug verdient.
- Fix: A possible object cycle was detected
System.Text.Json weigert sich, Graphen mit Rückverweisen zu serialisieren. Setzen Sie ReferenceHandler.IgnoreCycles, projizieren Sie auf ein DTO oder markieren Sie den Rückzeiger mit [JsonIgnore]. Preserve ist letzte Wahl.
- Fix: SqlException: Timeout expired bei EF Core-Migrationen
Migrationen verwenden den Design-Time-DbContext, nicht Ihr Runtime-CommandTimeout. Setzen Sie das Timeout über UseSqlServer(o => o.CommandTimeout(...)), das Command Timeout in der Verbindungszeichenfolge oder Database.SetCommandTimeout vor Migrate().
- Fix: dotnet ef migrations add scheitert mit 'Unable to create an object of type DbContext'
Die Design-Time-Tools von EF Core konnten Ihren DbContext nicht instanziieren. Stellen Sie einen Host über WebApplication.CreateBuilder bereit, verweisen Sie auf das richtige Startprojekt oder implementieren Sie IDesignTimeDbContextFactory.
- Fix: The instance of entity type cannot be tracked because another instance with the same key value is already being tracked
EF Core 11 wirft diese Ausnahme, wenn zwei Objekte einen Primärschlüssel innerhalb eines DbContext teilen. Lösen Sie das alte Objekt oder aktualisieren Sie es an Ort und Stelle. AsNoTracking auf der Lesung verhindert die Kollision.
- Fix: A second operation was started on this context instance before a previous operation completed
EF Core wirft diese Ausnahme, wenn zwei await parallel auf demselben DbContext laufen. Warten Sie jeden Aufruf sequenziell ab, oder holen Sie sich pro nebenläufiger Arbeitseinheit einen frischen DbContext über IDbContextFactory.
- Lösung: System.InvalidOperationException: No connection string named 'DefaultConnection' could be found
Wenn GetConnectionString in .NET 11 null zurückgibt, fehlt der Schlüssel in Ihrer appsettings.json, die Datei wird nicht in die Build-Ausgabe kopiert, oder die falsche Umgebungsdatei wird gewählt. Drei Prüfungen klären 95% der Fälle.
- N+1-Abfragen in EF Core 11 erkennen
Ein praktischer Leitfaden zum Aufspüren von N+1-Abfragen in EF Core 11: wie das Muster in echtem Code aussieht, wie Sie es über Logging, Diagnose-Interceptoren, OpenTelemetry und einen Test sichtbar machen, der den Build bricht, sobald ein Hot Path regrediert.
- Kompilierte Abfragen mit EF Core für Hot Paths verwenden
Ein praktischer Leitfaden zu kompilierten Abfragen in EF Core 11: wann EF.CompileAsyncQuery wirklich gewinnt, das Static-Field-Pattern, die Stolperfallen bei Include und Tracking, und wie Sie vorher und nachher benchmarken, um den Mehraufwand zu rechtfertigen.
- Integrationstests gegen einen echten SQL Server mit Testcontainers schreiben
Eine vollständige Anleitung, um ASP.NET Core-Integrationstests gegen einen echten SQL Server 2022 mit Testcontainers 4.11 und EF Core 11 auszuführen: WebApplicationFactory verdrahten, IAsyncLifetime, DbContext-Registrierung austauschen, Migrationen anwenden, Parallelität, Aufräumen mit Ryuk und CI-Stolperfallen.
2026 / 04
- So wärmen Sie das EF-Core-Modell vor der ersten Abfrage auf
EF Core baut sein konzeptionelles Modell träge beim ersten DbContext-Zugriff auf, weshalb die erste Abfrage in einem frisch gestarteten Prozess mehrere hundert Millisekunden langsamer ist als jede weitere. Dieser Leitfaden behandelt die drei realen Lösungen in EF Core 11: einen Start-IHostedService, der Model berührt und eine Verbindung öffnet, dotnet ef dbcontext optimize zum Ausliefern eines vorkompilierten Modells, und die Cache-Key-Fußangeln, die das Modell trotzdem stillschweigend neu aufbauen.
- Wie Sie DbContext mocken, ohne das Change Tracking zu zerstören
Das direkte Mocken von DbContext bricht den ChangeTracker stillschweigend, weshalb Microsoft davon abrät. Diese Anleitung zeigt die zwei Muster, die in EF Core 11 wirklich funktionieren: SQLite In-Memory mit einer offen gehaltenen Verbindung, damit der echte ChangeTracker läuft, und das Repository-Muster, das EF Core ganz aus dem Test heraushebt.
- Wie man IAsyncEnumerable<T> mit EF Core 11 verwendet
EF Core 11 Queries implementieren IAsyncEnumerable<T> direkt. So streamen Sie Zeilen mit await foreach, wann Sie es gegenüber ToListAsync bevorzugen sollten, und die Fallstricke rund um Verbindungen, Tracking und Cancellation.
- Wie man Records mit EF Core 11 korrekt verwendet
Eine praktische Anleitung zur Kombination von C#-Records und EF Core 11. Wo Records passen, wo sie das Change Tracking brechen, und wie man Value Objects, Entities und Projections modelliert, ohne mit dem Framework zu kämpfen.
- EF Core 11 beschneidet unnötige Referenz-Joins in Split Queries
EF Core 11 Preview 3 entfernt redundante To-one-Joins aus Split Queries und streicht überflüssige ORDER BY-Schlüssel. Ein gemeldetes Szenario wurde 29% schneller, ein anderes 22%. So sieht das SQL jetzt aus.
- EF Core 11 fügt GetEntriesForState hinzu, um DetectChanges zu überspringen
EF Core 11 Preview 3 führt ChangeTracker.GetEntriesForState ein, einen state-gefilterten Enumerator, der einen zusätzlichen DetectChanges-Pass in Hot Paths wie SaveChanges-Interceptors und Audit-Hooks vermeidet.
- EF Core 11 schaltet Cosmos-DB-Transaktionsbatches standardmäßig an
EF Core 11 gruppiert Cosmos-DB-Writes bei jedem SaveChanges in transaktionale Batches pro Container und Partition und liefert damit Best-Effort-Atomarität und weniger Roundtrips ohne Codeänderungen.
- EF Core 11 lässt Sie eine Migration in einem Befehl erstellen und anwenden
Der Befehl dotnet ef database update akzeptiert nun --add, um eine Migration in einem einzigen Schritt zu scaffolden und anzuwenden. So funktioniert es, warum es für Container und .NET Aspire wichtig ist, und worauf zu achten ist.
- EF Core 11 fügt native SQL Server Vektorsuche mit DiskANN-Indizes hinzu
EF Core 11 Preview 2 unterstützt SQL Server 2025 VECTOR_SEARCH() und DiskANN-Vektorindizes direkt aus LINQ. So richten Sie den Index ein, führen näherungsweise Abfragen aus, und das ändert sich gegenüber dem VectorDistance-Ansatz von EF Core 10.