Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Industrial programming >> C Sprache

Master Entity Framework:50 wichtige Fragen und Antworten im Vorstellungsgespräch (2026)

Sich auf ein Entity Framework-Interview vorzubereiten bedeutet, die Fragen vorwegzunehmen, die echte Fähigkeiten offenbaren. Interviewfragen zum Entity Framework offenbaren Denkweise, Leistungsbewusstsein und wie Kandidaten Konzepte in die Praxis umsetzen.

Die Beherrschung des Entity Framework eröffnet Rollen in der gesamten modernen Entwicklung, von datengesteuerten Plattformen bis hin zu Cloud-Diensten. Durch den praktischen Einsatz werden die analytischen Fähigkeiten gestärkt, die technische Tiefe gestärkt und Teams unterstützt. Bei der Einstellung von Führungskräften legen Wert auf praktische Problemlösungen, skalierbares Design, die Betreuung von Nachwuchskräften und Wachstumspfade für neue Absolventen.

Weiterlesen…

👉Kostenloser PDF-Download:Fragen und Antworten zum Entity Framework-Interview

1) Was ist Entity Framework und warum wird es verwendet?

Entity Framework (EF) ist das ORM-Framework (Object-Relational Mapping) von Microsoft für .NET, das die Datenbankinteraktion vereinfacht, indem es Entwicklern ermöglicht, mit Daten als stark typisierte .NET-Objekte anstelle von reinem SQL zu arbeiten . Diese Abstraktion ermöglicht es Entwicklern, CRUD-Vorgänge (Erstellen, Lesen, Aktualisieren, Löschen) mit bekannten C#-Konstrukten durchzuführen, und das Framework übernimmt die Übersetzung dieser Vorgänge in optimierte SQL-Abfragen unter der Haube. EF reduziert den Boilerplate-Datenzugriffscode, verbessert die Wartbarkeit und trägt zur Durchsetzung der Typsicherheit während der Kompilierung bei.

Anstatt SQL zu schreiben, können Sie beispielsweise Folgendes verwenden:

var customers = context.Customers.Where(c => c.IsActive).ToList();

EF übersetzt diese LINQ-Abfrage in SQL, führt sie in der Datenbank aus und gibt die Ergebnisse als Objekte zurück.

2) Erklären Sie den Unterschied zwischen den Ansätzen „Code First“, „Database First“ und „Model First“.

Entity Framework unterstützt drei Hauptentwicklungsansätze:

Ansatz Wann zu verwenden Was passiert Zuerst codieren Neue Projekte oder domänengesteuertes DesignSie definieren Entitätsklassen. EF generiert das Datenbankschema aus Code.Database First Vorhandene DatenbankEF generiert Entitätsklassen und Kontext aus einem vorhandenen Schema.Model First Wenn Sie visuelles Design bevorzugen:Sie entwerfen das Modell in einem visuellen Designer (Entity Designer) und EF generiert beide Klassen und die Datenbank.

Jeder Ansatz bedient unterschiedliche Szenarien:Code First ist in der agilen Entwicklung beliebt, Database First wird bei älteren Datenbanken und Model First bevorzugt eignet sich für Fälle, in denen visuelle Modellierung wichtig ist.

3) Was ist DbContext und welche Rolle spielt es in EF?

DbContext ist die primäre Klasse, die die Sitzung mit der Datenbank verwaltet , verfolgt Entitätsänderungen und koordiniert das Zurückspeichern von Daten in die Datenbank. Es stellt eine Brücke zwischen Ihrer C#-Anwendung und der Datenbank dar. Bis DbContext , definieren Sie DbSet<TEntity> Eigenschaften, die Sammlungen von Entitäten darstellen und Tabellen in der Datenbank zuordnen.

Beispiel:

public class AppDbContext : DbContext
{
 public DbSet<Product> Products { get; set; }
}

Hier, Products fungiert als Sammlung zur Durchführung von CRUD-Operationen. EF verwendet diesen Kontext, um Objektzustände zu verfolgen und generieren Sie SQL-Befehle auf SaveChanges() .

4) Was sind Migrationen im Entity Framework und wie werden sie verwendet?

Migrationen sind ein Mechanismus zum Verfolgen und Anwenden von Schemaänderungen im Laufe der Zeit in die Datenbank aufgenommen. Während sich Ihr Modell weiterentwickelt, helfen Migrationen dabei, die Datenbank synchron zu halten, ohne dass SQL-Skripts manuell geändert werden müssen. Mit Code First verwenden Sie Befehle wie:

Add-Migration InitialCreate
Update-Database

Dadurch werden Migrationsklassen generiert, die Schemaänderungen definieren und diese auf die Datenbank anwenden. Migrationen ermöglichen die Versionskontrolle für das Datenbankschema und erleichtern die gemeinsame Entwicklung.

5) Beschreiben Sie Lazy Loading, Eager Loading und Explicit Loading.

Das effiziente Laden verwandter Daten ist in EF von entscheidender Bedeutung. Hier ist ein Vergleich:

Strategie Wenn es läuft Typische Verwendung Lazy Loading Zugehörige Daten werden beim ersten Zugriff geladen. Verwenden Sie diese Option, wenn zugehörige Daten möglicherweise nicht immer benötigt werden.Eager Loading Zugehörige Daten werden im Voraus über .Include() geladen Verwenden Sie diese Option, wenn Sie wissen, dass Sie verwandte Daten benötigen.Explizites Laden Nach der Abfrage manuell geladen. Bietet Kontrolle darüber, wann genau die zugehörigen Daten geladen werden.

Zum Beispiel:

var orders = context.Orders.Include(o => o.Customer).ToList(); // Eager

Lazy Loading trägt dazu bei, anfängliche Abfragen zu reduzieren, kann jedoch zu N+1-Abfrageproblemen führen bei unsachgemäßer Verwendung.

6) Was ist Änderungsverfolgung in Entity Framework?

Die Änderungsverfolgung ist der interne Mechanismus von EF zur Überwachung von Entitätsstatusänderungen nachdem eine Abfrage ausgeführt wurde. Wenn eine Entität von DbContext abgerufen wird , es wird verfolgt. Alle Änderungen an seinen Eigenschaften werden notiert und wenn SaveChanges() aufgerufen wird, generiert EF den entsprechenden SQL INSERT , UPDATE , oder DELETE Aussagen. Für schreibgeschützte Szenarien, in denen eine Nachverfolgung nicht erforderlich ist, AsNoTracking() Verbessert die Leistung durch Deaktivieren der Änderungsverfolgung.

7) Wie geht Entity Framework mit Parallelitätskonflikten um?

Durch die Parallelitätskontrolle wird sichergestellt, dass mehrere Benutzer, die dieselben Daten aktualisieren, die Änderungen der anderen nicht unbeabsichtigt überschreiben. EF verwendet optimistische Parallelität standardmäßig. Ein gängiger Ansatz besteht darin, ein Parallelitätstoken hinzuzufügen (wie ein RowVersion Zeitstempel). EF prüft dieses Token während SaveChanges() , und wenn es von der Datenbankversion abweicht, ein DbUpdateConcurrencyException wird geworfen, was auf einen Konflikt hinweist. Entwickler können diese Ausnahme dann behandeln, um es erneut zu versuchen oder Datenunterschiede zu beheben.

8) Was sind Navigationseigenschaften in EF?

Navigationseigenschaften definieren Beziehungen zwischen Entitäten. Sie ermöglichen EF, durch Assoziationen zu navigieren (z. B. eins-zu-viele) ohne manuelle Verknüpfungen:

public class Order
{
 public int Id { get; set; }
 public Customer Customer { get; set; }
}

Hier, Customer ist eine Navigationseigenschaft, die Order verknüpft zu seinem zugehörigen Customer . EF verwendet diese Eigenschaften, um bei Abfragen automatisch Beziehungen und Verknüpfungen aufzubauen. Navigationseigenschaften funktionieren zusammen mit Fremdschlüsseln um Beziehungen zu modellieren.

9) Was ist der Zweck von AsNoTracking()?

AsNoTracking() Deaktiviert die Änderungsverfolgung für eine Abfrage, was für schreibgeschützt von Vorteil ist Vorgänge, bei denen Sie nicht beabsichtigen, die abgerufenen Entitäten zu aktualisieren. Dies verbessert die Leistung, indem die Speichernutzung und der Tracking-Overhead reduziert werden. Dies ist besonders nützlich, wenn große Datensätze abgerufen werden, ohne sie zu ändern.

10) Was sind kompilierte Abfragen und wann sollten Sie sie verwenden?

Kompilierte Abfragen sind eine Technik zur Leistungsoptimierung. Wenn eine LINQ-Abfrage ausgeführt wird, übersetzt EF sie normalerweise jedes Mal in SQL. Bei kompilierten Abfragen erfolgt diese Übersetzung einmal und der resultierende Delegat wird wiederverwendet – wodurch der Overhead für häufig ausgeführte oder komplexe Abfragen reduziert wird. Verwenden Sie sie bei starkem Verkehr Szenarien, in denen dieselbe Abfrage wiederholt mit unterschiedlichen Parametern ausgeführt wird.

11) Was sind Entitätszustände im Entity Framework und wie wirken sie sich auf SaveChanges() aus?

Entity Framework verfolgt den Status jeder Entität um zu bestimmen, welcher Datenbankvorgang während SaveChanges() ausgeführt werden soll . Die wichtigsten Entitätszustände sind:

Bundesstaat Beschreibung Vorgang ausgelöst Hinzugefügt Neue Entität soll eingefügt werdenINSERT Geändert Vorhandene Entität aktualisiertUPDATE Gelöscht Entität zum Entfernen markiertDELETE Unverändert Keine Änderungen erkannt. KeineGetrennt Nicht von contextNone verfolgt

Wenn Sie SaveChanges() anrufen , EF prüft die Entitätszustände und führt entsprechende SQL-Befehle aus. Beispielsweise wurde eine neue Entität zu einem DbSet hinzugefügt wird als Hinzugefügt markiert , was zu einem INSERT führt Abfrage.

Beispiel:

context.Entry(product).State = EntityState.Modified;
context.SaveChanges();

Dadurch wird der Datenbankeintrag für die Entität explizit aktualisiert.

Zustände verstehen sorgt für eine bessere Kontrolle über die Datensynchronisierung und Leistung.

12) Was sind die Vor- und Nachteile der Verwendung von Entity Framework?

Entity Framework bietet starke Vorteile, aber auch einige Kompromisse, abhängig von Ihrem Anwendungsfall.

Vorteile Nachteile Vereinfacht den Datenzugriff über LINQ und Objektmodelle. Leistungsaufwand im Vergleich zu rohem ADO.NET. Reduziert Boilerplate-SQL-Code. Komplexe Abfragen können ineffizientes SQL erzeugen. Unterstützt mehrere Datenbankanbieter. Erschwertes Debuggen generierter SQL-Anweisungen. Stark typisiert, wodurch die Sicherheit bei der Kompilierung verbessert wird. Migrationskonflikte in großen Teams möglich. Ermöglicht schnelles Prototyping mit Code First. Weniger Kontrolle über fein abgestimmte Abfragen.

Für große Systeme, die maximale Leistung erfordern, können Entwickler dennoch Roh-SQL mit EF mischen zur Optimierung.

13) Wie geht Entity Framework mit Beziehungen um (eins-zu-eins, eins-zu-viele, viele-zu-viele)?

Entity Framework verwaltet Beziehungen über Navigationseigenschaften und ausländische Schlüsselassoziationen .

Die Arten von Beziehungen sind:

Beziehungstyp Beschreibung Beispiel Eins-zu-eins Jede Entitätsinstanz hat eine zugehörige Entität.UserUserProfile Eins-zu-Viele Eine Entität bezieht sich auf mehrere andere.CustomerOrders Many-to-Many Mehrere Entitäten stehen in Beziehung zueinander.StudentCourse

Beispiel für ein One-to-Many Beziehung:

public class Customer
{
 public int CustomerId { get; set; }
 public ICollection<Order> Orders { get; set; }
}

EF generiert automatisch Fremdschlüssel und verarbeitet Kaskadenlöschregeln je nach Konfiguration.

Sie können auch die Fluent API verwenden für eine explizitere Beziehungszuordnung.

14) Was ist der Unterschied zwischen LINQ to Entities und LINQ to SQL?

Funktion LINQ to Entities LINQ to SQL Unterstützte DatenbankenMehrere (SQL Server, Oracle, MySQL usw.)Nur SQL ServerUnterliegendes FrameworkEntity FrameworkADO.NETModellKonzeptuelles EntitätsmodellNur DatenbanktabellenZuordnungKomplexe Zuordnung (Vererbung, Zuordnungen)Direkte TabellenzuordnungZukünftige UnterstützungAktiv unterstütztVeraltet

LINQ to Entities ist Teil von Entity Framework und vielseitiger, während LINQ to SQL ist auf SQL Server und einfachere Anwendungsfälle beschränkt.

Daher wird LINQ to Entities für die Entwicklung auf Unternehmensebene empfohlen.

15) Was ist der Unterschied zwischen ObjectContext und DbContext?

Funktion ObjectContext DbContext FrameworkFrühere EF-VersionenVereinfachte API in EF 4.1+KomplexitätAusführlicherLeicht und einfachLeistungEtwas schneller, aber schwieriger zu verwendenVereinfacht mit minimalem OverheadÄnderungsverfolgungManuelle Konfiguration erforderlichAutomatische NachverfolgungBevorzugte VerwendungLegacy-SystemeModerne EF-/EF-Core-Projekte

DbContext umschließt intern ObjectContext bietet aber eine übersichtlichere und intuitivere API. Die meisten aktuellen .NET-Anwendungen sollten DbContext verwenden .

16) Erklären Sie den Lebenszyklus einer Entität im Entity Framework.

Der Lebenszyklus einer Entität beschreibt ihre Zustandsübergänge Von der Schöpfung bis zur Beständigkeit:

  1. Erschaffung – Entität wird im Speicher instanziiert (Status:Detached). ).
  2. Anhang – Zum Kontext hinzugefügt über DbSet.Add() (Status:Hinzugefügt ).
  3. Änderung – Automatisch erkannte Änderungen (Status:Geändert ).
  4. BeharrlichkeitSaveChanges() aufgerufen → SQL-Befehle ausgeführt.
  5. Löschen – Entität als Gelöscht markiert und aus der Datenbank entfernt.

Das Verständnis dieses Lebenszyklus hilft beim Debuggen von Datenproblemen und der Optimierung der EF-Kontextverwaltung.

17) Wozu dient die Fluent API im Entity Framework?

Die Fluent API Bietet eine programmgesteuerte Möglichkeit zum Konfigurieren von Modellbeziehungen, Einschränkungen und Zuordnungen, die häufig im OnModelCreating() verwendet wird Methode Ihres DbContext .

Es bietet eine detaillierte Kontrolle über Konfigurationen, die Datenanmerkungen enthalten kann nicht ausgedrückt werden.

Beispiel:

modelBuilder.Entity<Customer>()
 .HasMany(c => c.Orders)
 .WithOne(o => o.Customer)
 .HasForeignKey(o => o.CustomerId);

Die Fluent API ist besonders leistungsstark für die Konfiguration von zusammengesetzten Schlüsseln , Many-to-many-Beziehungen und Kaskadenregeln .

18) Was sind Datenanmerkungen im Entity Framework?

Datenanmerkungen sind Attribute direkt auf Modellklassen oder Eigenschaften angewendet, um das Schemaverhalten zu definieren. Sie sind einfacher als Fluent API, aber weniger flexibel.

Beispiel:

public class Product
{
 [Key]
 public int ProductId { get; set; }
 [Required]
 [StringLength(50)]
 public string Name { get; set; }
}

Anmerkungen definieren Schlüssel, Zeichenfolgenlängen, erforderliche Felder und Beziehungen. Für fortgeschrittene Fälle kombinieren Entwickler normalerweise Datenanmerkungen und Fluent API .

19) Was ist der Unterschied zwischen verfolgten und nicht verfolgten Entitäten in EF Core?

Typ Beschreibung Anwendungsfall Verfolgte Entitäten Überwacht von DbContext für Änderungen.Standardverhalten für Aktualisierungen.Nicht verfolgte Entitäten Nicht überwacht; abgerufen mit .AsNoTracking() .Ideal für schreibgeschützte Vorgänge.

Verfolgte Entitäten verbrauchen mehr Speicher, ermöglichen EF jedoch die automatische Erkennung von Änderungen.

Nicht verfolgte Entitäten verbessern die Leistung in Szenarien mit hoher Lesegeschwindigkeit und geringer Aktualisierung.

20) Wie können Sie unformatierte SQL-Abfragen in Entity Framework ausführen?

Entity Framework ermöglicht die Ausführung von Roh-SQL für benutzerdefinierte oder leistungskritische Abfragen.

var result = context.Products
 .FromSqlRaw("SELECT * FROM Products WHERE Price > 100")
 .ToList();

Für Nicht-Abfragebefehle:

context.Database.ExecuteSqlRaw("DELETE FROM Products WHERE Discontinued = 1");

Verwenden Sie diese Funktion sorgfältig, um eine SQL-Injection zu vermeiden und behalten Sie die datenbankunabhängige Flexibilität bei.

21) Was ist der Unterschied zwischen Entity Framework und Entity Framework Core?

Entity Framework (EF) und Entity Framework Core (EF Core) unterscheiden sich in Architektur, Funktionen und plattformübergreifender Unterstützung.

Funktion Entity Framework 6 (EF6) Entity Framework Core Nur Plattform.NET Framework. Plattformübergreifend (.NET 5/6/7). Architektur. Basierend auf ObjectContext. Leicht und modular.

EF Core ist das moderne, aktiv entwickelte Version und aufgrund ihrer Flexibilität und Leistung die empfohlene Wahl für neue .NET-Projekte.

22) Wie funktionieren Transaktionen im Entity Framework?

Transaktionen im Entity Framework gewährleisten die Datenintegrität wenn mehrere Vorgänge gleichzeitig erfolgreich sein oder fehlschlagen müssen. Standardmäßig umschließt EF SaveChanges() innerhalb einer Transaktion. Für manuelle Steuerung:

using (var transaction = context.Database.BeginTransaction())
{
 try
 {
 context.Customers.Add(new Customer());
 context.SaveChanges();
 context.Orders.Add(new Order());
 context.SaveChanges();
 transaction.Commit();
 }
 catch
 {
 transaction.Rollback();
 }
}

Dies stellt die Atomizität sicher – wenn ein Befehl fehlschlägt, werden alle Änderungen rückgängig gemacht.

EF lässt sich auch in System.Transactions integrieren für verteilte Transaktionsunterstützung.

23) Erklären Sie die TPH-, TPT- und TPC-Vererbungsstrategien im Entity Framework.

Entity Framework unterstützt drei Hauptvererbungszuordnungsstrategien zur Modellierung von Klassenhierarchien.

Strategie Beschreibung Beispiel Vorteile Nachteile TPH (Tabelle pro Hierarchie) Alle Klassen teilen sich einen Tisch; Eine Diskriminatorspalte identifiziert den Typ.Häufig in EF Core.Einfache, schnelle Abfragen.Tabelle kann groß und spärlich werden.TPT (Tabelle pro Typ) Jede Unterklasse verfügt über eine eigene Tabelle. Jede abgeleitete Klasse wird separat zugeordnet. Normalisiertes Schema. Langsamere Verknüpfungen bei großen Hierarchien. TPC (Table Per Concrete Class) Jede Klasse verfügt über eine eigene Tabelle mit doppelten Spalten. Jede Entität wird separat zugeordnet. Hohe Leseleistung. Datenredundanz.

Die meisten Entwickler bevorzugen TPH aus Gründen der Einfachheit, es sei denn, Normalisierungs- oder Leistungsanforderungen erfordern etwas anderes.

24) Wie gehen Sie mit der Leistungsoptimierung in Entity Framework um?

So optimieren Sie die Leistung von Entity Framework:

  1. Verwenden Sie AsNoTracking() für schreibgeschützte Abfragen.
  2. Eifrig geladen nur notwendige verwandte Entitäten mit .Include() .
  3. N+1-Abfragen vermeiden unter Verwendung von Projektionen oder Select() .
  4. Kompilierte Abfragen verwenden für häufig ausgeführte Vorgänge.
  5. Batch mehrerer Einfügungen/Aktualisierungen mit AddRange() und SaveChanges() .
  6. AutoDetectChanges deaktivieren für Massenvorgänge:context.Configuration.AutoDetectChangesEnabled = false;
  7. Caching und Paginierung verwenden für große Datenmengen.

Eine gut abgestimmte EF-Implementierung kann die Leistung von ADO.NET erreichen und gleichzeitig die Entwicklerproduktivität erhalten.

25) Was ist eine Schatteneigenschaft in Entity Framework Core?

Eine Schatteneigenschaft existiert im EF-Modell, aber nicht in der Entitätsklasse. Es wird von EF im Änderungstracker gepflegt und in der Datenbank gespeichert.

Beispiel:

modelBuilder.Entity<Order>()
 .Property<DateTime>("LastUpdated");

Dadurch kann EF zusätzliche Metadaten (z. B. Zeitstempel, Prüfinformationen) speichern, ohne die Entitätsklasse zu ändern.

Sie können auf Schatteneigenschaften zugreifen über:

var value = context.Entry(order).Property("LastUpdated").CurrentValue;

Schatteneigenschaften eignen sich ideal für Protokollierungs- oder Prüfszenarien.

26) Was sind Wertkonverter in EF Core?

Wertkonverter in EF Core ermöglichen die Transformation von Eigenschaftswerten beim Lesen aus oder Schreiben in die Datenbank.

Um beispielsweise eine Aufzählung als Zeichenfolge zu speichern:

modelBuilder.Entity<Employee>()
 .Property(e => e.Status)
 .HasConversion(
 v => v.ToString(),
 v => (EmployeeStatus)Enum.Parse(typeof(EmployeeStatus), v));

Dies erhöht die Flexibilität für benutzerdefinierte Datentypen wie enum , bool , oder DateTimeOffset .

Wertkonverter werden auch zur Verschlüsselung, Komprimierung oder Maskierung verwendet sensibler Daten.

27) Was sind globale Abfragefilter und wie funktionieren sie?

Globale Abfragefilter ermöglichen die automatische Anwendung von Bedingungen auf alle Abfragen für eine Entität.

Dies ist besonders nützlich für vorläufige Löschvorgänge oder Mehrmandantenfähigkeit .

Beispiel:

modelBuilder.Entity<Employee>()
 .HasQueryFilter(e => !e.IsDeleted);

Jede Abfrage, die gegen Employee ausgeführt wird schließt vorläufig gelöschte Datensätze automatisch aus, sofern sie nicht explizit überschrieben werden.

Globale Filter verbessern die Wartbarkeit und Datensicherheit.

28) Wie können Sie Entity Framework-Code mithilfe von Komponententests testen?

Um die EF-Logik einem Unit-Test zu unterziehen, ohne auf eine echte Datenbank zuzugreifen, verwenden Sie In-Memory-Datenbanken oder spöttisch :

Unit-Tests sollten Folgendes validieren:

Das Testen mit EF Core InMemory sorgt für Geschwindigkeit und vermeidet Abhängigkeiten von SQL Server.

29) Erklären Sie die Repository- und Unit-of-Work-Muster in EF.

Diese beiden Architekturmuster helfen dabei, den Datenzugriff zu abstrahieren und die Transaktionskonsistenz wahren .

Muster Zweck Implementierungsbeispiel Repository Kapselt CRUD-Operationen für jede Entität.IRepository<T> Schnittstelle mit Add() , GetAll() usw. Arbeitseinheit Koordiniert mehrere Repositorys innerhalb einer Transaktion.SaveChanges() fungiert als Commit-Grenze.

Beispiel:

public class UnitOfWork : IUnitOfWork
{
 private readonly AppDbContext _context;
 public void Commit() => _context.SaveChanges();
}

Diese Muster verbessern die Testbarkeit , Code-Wiederverwendung und Belangetrennung in großen Unternehmensanwendungen.

30) Was ist der Unterschied zwischen Eager Loading und Projection Loading?

Aspekt Eifrig geladen Projektion laden Zweck:Lädt verwandte Daten im Voraus. Lädt nur bestimmte Felder oder Eigenschaften. Methode .Include() .Select() Beispielcontext.Orders.Include(o => o.Customer) context.Orders.Select(o => new { o.Id, o.Customer.Name }) LeistungRuft vollständige Objekte abRuft minimale Daten abAnwendungsfallWenn verwandte Entitäten für die Verarbeitung benötigt werdenWenn Sie spezifische, kompakte Daten benötigen

Das Laden von Projektionen ist eine Leistungsoptimierung Dies reduziert den Speicheraufwand, indem nur die erforderlichen Spalten ausgewählt werden.

31) Was sind Interceptoren in Entity Framework Core?

Mit Interceptoren in EF Core können Entwickler Datenbankvorgänge wie Abfrageausführung, Befehlserstellung und Verbindungsöffnung abfangen und ändern .

Sie fungieren als Middleware-Komponenten zwischen EF und dem Datenbankanbieter.

Beispiel: Protokollierung aller ausgeführten SQL-Befehle.

public class CommandInterceptor : DbCommandInterceptor
{
 public override void ReaderExecuting(
 DbCommand command,
 CommandEventData eventData,
 InterceptionResult<DbDataReader> result)
 {
 Console.WriteLine($"Executing SQL: {command.CommandText}");
 base.ReaderExecuting(command, eventData, result);
 }
}

Sie registrieren es im DbContextOptionsBuilder :

optionsBuilder.AddInterceptors(new CommandInterceptor());

Vorteile:

32) Wie geht EF Core mit asynchronen Vorgängen um?

Entity Framework Core unterstützt vollständig die asynchrone Programmierung durch Methoden wie SaveChangesAsync() , ToListAsync() und FirstOrDefaultAsync() .

Die asynchrone Ausführung trägt zur Verbesserung der Skalierbarkeit bei in Webanwendungen, indem Threads freigegeben werden, während auf E/A-gebundene Datenbankoperationen gewartet wird.

Beispiel:

var customers = await context.Customers
 .Where(c => c.IsActive)
 .ToListAsync();

Asynchrone Vorgänge sind besonders effektiv in ASP.NET Core-APIs mit hohem Durchsatz und Microservices, wodurch blockierende Anrufe reduziert und Reaktionszeiten verbessert werden.

33) Was ist Verbindungsresilienz in Entity Framework Core?

Verbindungsresilienz hilft Ihrer Anwendung, sich bei vorübergehenden Datenbankausfällen automatisch wiederherzustellen , wie Netzwerkunterbrechungen oder SQL-Timeouts.

Es kann wie folgt konfiguriert werden:

optionsBuilder.UseSqlServer(
 connectionString,
 options => options.EnableRetryOnFailure(5, TimeSpan.FromSeconds(10), null)
);

Hier wiederholt EF fehlgeschlagene Vorgänge bis zu fünf Mal mit Verzögerungen.

Dies ist besonders nützlich in Cloud-gehosteten Umgebungen wie Azure SQL, wo vorübergehende Fehler häufig sind.

34) Was sind eigene Entitätstypen in EF Core?

Eigene Entitäten ermöglichen die Modellierung von Wertobjekten die vollständig vom Lebenszyklus einer anderen Entität abhängen.

Sie teilen sich dieselbe Tabelle wie ihr Besitzer und können nicht unabhängig voneinander existieren.

Beispiel:

public class Address
{
 public string Street { get; set; }
 public string City { get; set; }
}
public class Customer
{
 public int Id { get; set; }
 public Address Address { get; set; }
}

Konfiguration:

modelBuilder.Entity<Customer>().OwnsOne(c => c.Address);

Anwendungsfall:

Modellierungskonzepte wie Adresse , Geld , oder Messung die keine eigene Identität haben.

35) Wie können Sie vorläufige Löschungen in Entity Framework Core implementieren?

Vorläufige Löschungen markieren Datensätze als gelöscht, anstatt sie physisch zu entfernen.

Sie werden mithilfe eines booleschen Flags implementiert und globale Abfragefilter .

modelBuilder.Entity<Employee>()
 .HasQueryFilter(e => !e.IsDeleted);

Im Löschvorgang:

employee.IsDeleted = true;
context.Update(employee);
context.SaveChanges();

Vorteile:

Nachteile:

36) Was ist ein kompiliertes Modell in EF Core und warum wird es verwendet?

In EF Core 6+ kompilierte Modelle Ermöglichen Sie die Vorkompilierung der Metadaten des EF-Modells in eine .NET-Assembly, wodurch die Startzeit und der Laufzeitaufwand reduziert werden.

Schritte:

  1. Führen Sie den Befehl aus:dotnet ef dbcontext optimize
  2. EF generiert eine vorkompilierte Modelldatei, die die Anwendung zur Laufzeit schneller lädt.

Vorteil: Reduziert die Initialisierungslatenz um 30–40 %, insbesondere bei großen Anwendungen mit vielen Entitäten.

Anwendungsfall: Hochleistungs-Microservices und serverlose Umgebungen.

37) Wie können Sie Caching in Entity Framework implementieren?

Caching trägt dazu bei, sich wiederholende Datenbankabfragen zu reduzieren. Es gibt zwei Hauptebenen:

Typ Beschreibung Beispiel Cache der ersten Ebene Eingebaut, gemäß DbContext InstanzAutomatisch verwalteterSecond-Level-Cache Externer Cache, der kontextübergreifend gemeinsam genutzt wird. Verwenden Sie Bibliotheken wie EFCoreSecondLevelCacheInterceptor

Beispiel für Second-Level-Caching:

services.AddEFSecondLevelCache(options =>
{
 options.UseMemoryCacheProvider().DisableLogging(false);
});

Dies verbessert die Leistung in leseintensiven Anwendungen erheblich durch Vermeidung redundanter Datenbanktreffer.

38) Wie verwaltet EF Core Parallelitätstoken und Zeitstempel?

Parallelitätstoken verhindern widersprüchliche Aktualisierungen in Mehrbenutzerumgebungen.

Sie können eine Eigenschaft mit dem [ConcurrencyCheck] als Parallelitätstoken markieren oder [Timestamp] Attribut.

Beispiel:

public class Product
{
 public int Id { get; set; }
 [Timestamp]
 public byte[] RowVersion { get; set; }
}

Wenn eine Aktualisierung erfolgt, fügt EF diese Spalte in den WHERE ein Klausel.

Wenn der Wert nicht übereinstimmt, wird ein DbUpdateConcurrencyException angezeigt wird ausgelöst – was eine optimistische Parallelitätskontrolle gewährleistet .

39) Wie implementieren Sie die Überwachung (Erstellungs-, Änderungs- und Löschverfolgung) in EF Core?

Bei der Überwachung werden Metadaten verfolgt, z. B. wer erstellt, geändert oder gelöscht hat Datensätze.

Sie können SaveChanges() überschreiben :

public override int SaveChanges()
{
 var entries = ChangeTracker.Entries()
 .Where(e => e.Entity is IAuditable && 
 (e.State == EntityState.Added || e.State == EntityState.Modified));
 foreach (var entry in entries)
 {
 var auditable = (IAuditable)entry.Entity;
 auditable.LastModified = DateTime.UtcNow;
 }
 return base.SaveChanges();
}

Schnittstelle:

public interface IAuditable
{
 DateTime Created { get; set; }
 DateTime LastModified { get; set; }
}

Diese Methode zentralisiert die Prüflogik und gewährleistet so eine konsistente Datenverwaltung .

40) Was sind die Best Practices für die Verwendung von Entity Framework in Unternehmensanwendungen?

Kategorie Best Practice Vorteil Leistung Verwenden Sie AsNoTracking() und Projektionen für schreibgeschützte Abfragen. Reduziert den Overhead.Design Implementieren Sie Repository- und Unit-of-Work-Muster. Verbessert die Wartbarkeit.Sicherheit Verwenden Sie parametrisierte Abfragen, um SQL-Injection zu vermeiden. Datenschutz.Skalierbarkeit Verwenden Sie Verbindungspooling und asynchrone Methoden. Bewältigt hohe Lasten.Migrationen Nutzen Sie automatisierte Migrationen mit Versionskontrolle. Vereinfacht die Schemaverwaltung.Konfiguration Verbindungszeichenfolgen und Geheimnisse externalisieren. Bessere Umgebungsisolation.Testen Verwenden Sie den InMemory-Anbieter für Komponententests. Schnellere Testläufe. Protokollierung Aktivieren Sie die EF-Protokollierung für Leistungseinblicke. Einfacheres Debuggen.

Diese Praktiken gewährleisten Robustheit, Skalierbarkeit und Wartbarkeit Anwendungen, die auf Entity Framework basieren.

41) Wie können Sie LINQ-Abfragen für eine bessere SQL-Übersetzung in Entity Framework optimieren?

Entity Framework konvertiert LINQ-Abfragen automatisch in SQL, aber ineffiziente Muster können zu langsamem oder redundantem SQL führen. Durch die Optimierung von LINQ wird sichergestellt, dass das ORM leistungsstarke Datenbankabfragen generiert.

Optimierungstechniken:

Projektionen verwenden:

  1. Wählen Sie nur die erforderlichen Spalten anstelle ganzer Entitäten aus.
var customers = context.Customers
 .Select(c => new { c.Id, c.Name })
 .ToList();
Kundenseitige Auswertung vermeiden:
Stellen Sie immer sicher, dass die Filterung in SQL erfolgt , nicht im Gedächtnis. EF Core warnt, wenn die Auswertung clientseitig erfolgt.Verwenden Sie AsNoTracking() für schreibgeschützte Daten.
var orders = context.Orders.AsNoTracking().ToList();
Kompilierte Abfragen nutzen für wiederholte LINQ-Vorgänge.Vermeiden Sie unnötigen .Include() Anrufe – Fügen Sie zugehörige Daten nur bei Bedarf hinzu.

Beispiel:

Ineffizient:

context.Customers.ToList().Where(c => c.IsActive);

Effizient:

context.Customers.Where(c => c.IsActive).ToList();

42) Welche verschiedenen Möglichkeiten gibt es, Anfangsdaten in EF Core zu säen?

Durch das Daten-Seeding wird sichergestellt, dass die Datenbank über Standard- oder Referenzdaten verfügt wenn erstellt.

Ansatz 1:Verwendung von ModelBuilder

modelBuilder.Entity<Role>().HasData(
 new Role { Id = 1, Name = "Admin" },
 new Role { Id = 2, Name = "User" }
);

Dadurch werden während Update-Database automatisch Daten eingefügt .

Ansatz 2:Benutzerdefinierte Seed-Methode

Code beim Start manuell ausführen:

context.Database.Migrate();
if (!context.Users.Any())
{
 context.Users.Add(new User { Name = "Admin" });
 context.SaveChanges();
}

Ansatz 3:SQL-Skripte

Verwenden Sie bei Migrationen unformatiertes SQL:

migrationBuilder.Sql("INSERT INTO Roles (Name) VALUES ('Admin')");

Empfehlung:
Verwenden Sie HasData() für statische Referenzdaten und programmatisches Seeding für dynamische Startdaten.

43) Wie verwaltet EF Core Datenbankanbieter intern?

EF Core ist anbieterunabhängig Dies bedeutet, dass es über separate Datenbankanbieterpakete auf mehrere Datenbank-Engines abzielen kann .

Gängige Anbieter:

Anbieter NuGet-Paket Datenbank SQL ServerMicrosoft.EntityFrameworkCore.SqlServer MSSQLSQLiteMicrosoft.EntityFrameworkCore.Sqlite Mobile/DesktopPostgreSQLNpgsql.EntityFrameworkCore.PostgreSQL PostgreSQLMySQLPomelo.EntityFrameworkCore.MySql MySQLCosmos DBMicrosoft.EntityFrameworkCore.Cosmos NoSQL

Intern verwendet EF Core Abstraktionsebenen für:

Jeder Anbieter implementiert seine eigenen Klassen, die von den Basisabstraktionen von EF Core erben (z. B. RelationalDatabaseProvider). , QuerySqlGenerator ).

44) Was ist eine „geteilte Abfrage“ und wann sollten Sie sie verwenden?

Geteilte Abfragen verhindern, dass EF große, komplexe Verknüpfungen durchführt durch die Ausführung mehrerer SQL-Abfragen statt einer.

Beispiel:

var customers = context.Customers
 .Include(c => c.Orders)
 .AsSplitQuery()
 .ToList();

Dies führt aus:

  1. Abfrage 1 → Kunden gewinnen
  2. Abfrage 2 → Bestellungen im Zusammenhang mit diesen Kunden abrufen

Vorteile:

Nachteil:

Mehrere Roundtrips zur Datenbank.

Verwenden Sie geteilte Abfragen wenn Sie eifrig große verwandte Daten laden, kann dies zu Speicherproblemen führen.

45) Wie können Sie EF-generierte SQL-Befehle effektiv überwachen?

Durch die Überwachung von SQL können Sie langsame Abfragen debuggen und das ORM-Verhalten optimieren.

Methoden zum Protokollieren von SQL:

  1. Konsolenprotokollierung
optionsBuilder
 .UseSqlServer(conn)
 .LogTo(Console.WriteLine, LogLevel.Information);
ILoggerFactory-Integration
var loggerFactory = LoggerFactory.Create(builder => builder.AddConsole());
optionsBuilder.UseLoggerFactory(loggerFactory);
Abfangjäger Implementieren Sie DbCommandInterceptor um Befehle und Timings zu erfassen.Profiling-Tools Verwenden Sie Tools wie:

Die Protokollierung sollte selektiv aktiviert sein in der Produktion, um Leistungsaufwand zu vermeiden.

46) Was ist der Unterschied zwischen ChangeTracker.DetectChanges() und AutoDetectChangesEnabled?

Funktion DetectChanges() AutoDetectChangesEnabled TypeMethodPropertyPurposeZwingt EF, nachverfolgte Entitäten zu scannen und Änderungen zu erkennen. Aktiviert/deaktiviert die automatische Änderungserkennung.DefaultManualTrueUsageExpliziter Aufruf zur Leistungsoptimierung.Deaktiviert für Massenaktualisierungen

Beispiel:

context.ChangeTracker.AutoDetectChangesEnabled = false;
foreach (var item in list)
{
 context.Add(item);
}
context.SaveChanges();

Das Deaktivieren der automatischen Erkennung in Schleifen verbessert die Leistung um bis zu 40 % bei Massenvorgängen.

47) Wie verwenden Sie temporale Tabellen mit EF Core?

Temporale Tabellen (eingeführt in SQL Server 2016) ermöglichen Ihnen das Verfolgen historischer Daten automatisch.

Schritte:

  1. Zeitliche Unterstützung bei der Migration aktivieren:
builder.Entity<Employee>()
 .ToTable("Employees", b => b.IsTemporal());
Historische Daten abfragen:
var history = context.Employees
 .TemporalAsOf(DateTime.UtcNow.AddDays(-7))
 .ToList();

Vorteile:

EF Core 6+ unterstützt vollständige zeitliche Abfragen.

48) Wie unterstützt EF Core kompilierte Abfragen und vorgenerierte Modelle zusammen?

Kompilierte Abfragen und kompilierte Modelle sind zwei Leistungsmerkmale die sich gegenseitig ergänzen.

Funktion Zweck Kompilierte AbfragenCache-AbfrageübersetzungsergebnisseKompilierte ModelleModellmetadaten vorkompilieren

Beispiel einer kompilierten Abfrage:

static readonly Func<AppDbContext, int, Customer> _getCustomerById =
 EF.CompileQuery((AppDbContext ctx, int id) =>
 ctx.Customers.FirstOrDefault(c => c.Id == id));

Verwendung:

var customer = _getCustomerById(context, 5);

Gemeinsam: Kompilierte Modelle reduzieren die Startkosten , während kompilierte Abfragen den Abfrage-Overhead zur Laufzeit reduzieren – ideal für hochfrequente Abfragen .

49) Was sind häufige Fallstricke bei der Verwendung von EF in der Microservices-Architektur?

Häufige Fehler:

  1. Gemeinsamer DbContext für alle Dienste
    → Verstößt gegen die Microservice-Isolation.
    → Jeder Microservice sollte seinen eigenen DbContext und sein eigenes Schema haben.
  2. Geschwätzige Kommunikation (N+1 Abfragen)
    → Minimieren Sie EF-Abfragen pro API-Aufruf.
  3. Übermäßiges eifriges Laden
    → Über DTOs nur das laden, was benötigt wird.
  4. Zentralisierte Migrationen
    → Each service should manage its own migrations independently.
  5. Lack of Transactional Boundaries
    → Use distributed transactions (Outbox pattern) if cross-service consistency is required.
  6. Tight Coupling to SQL Provider
    → Use repository abstraction to keep flexibility in database choice.

50) How does dependency injection integrate with DbContext in ASP.NET Core?

Entity Framework integrates seamlessly with ASP.NET Core’s built-in Dependency Injection (DI) system.

Setup:

services.AddDbContext<AppDbContext>(options =>
 options.UseSqlServer(Configuration.GetConnectionString("Default")));

Then inject it into controllers or services:

public class CustomerService
{
 private readonly AppDbContext _context;
 public CustomerService(AppDbContext context)
 {
 _context = context;
 }
}

Lifetimes:

Lifetime Beschreibung Recommended For ScopedOne context per HTTP requestDefaultTransientNew instance every timeBackground jobsSingletonShared globallyAvoid (not thread-safe)

Using DI ensures testability, lifecycle management , and resource efficiency across web and background processes.

🔍 Top Entity Framework Interview Questions with Real-World Scenarios &Strategic Responses

1) What is Entity Framework, and why is it used in enterprise applications?

Expected from candidate: The interviewer wants to assess your foundational understanding of Entity Framework and its value in real-world applications.

Example answer: Entity Framework is an Object-Relational Mapping framework for .NET that allows developers to work with databases using .NET objects instead of raw SQL. It is used in enterprise applications to improve productivity, reduce boilerplate data access code, and maintain a strong separation of concerns.

2) Can you explain the difference between Code First, Database First, and Model First approaches?

Expected from candidate: The interviewer wants to evaluate your knowledge of different development workflows and when to use each one.

Example answer: Code First starts with domain classes and generates the database from code. Database First begins with an existing database and generates entity classes. Model First uses a visual designer to define the model and then creates both code and database. Each approach is chosen based on project requirements and existing infrastructure.

3) How does Entity Framework handle relationships between tables?

Expected from candidate: The interviewer is checking your understanding of data modeling and relational mapping.

Example answer: Entity Framework handles relationships using navigation properties and foreign keys. It supports one-to-one, one-to-many, and many-to-many relationships, allowing developers to traverse related data using object references rather than joins.

4) Describe a situation where you improved database performance using Entity Framework.

Expected from candidate: The interviewer wants to hear a practical example demonstrating optimization skills.

Example answer: In my previous role, I improved performance by reducing unnecessary eager loading and implementing projection queries with Select statements. This minimized the amount of data retrieved from the database and significantly reduced query execution time.

5) How do you manage migrations in Entity Framework?

Expected from candidate: The interviewer is assessing your experience with schema changes and version control.

Example answer: Migrations are managed using the built-in migration tools that track model changes over time. At a previous position, I regularly generated and reviewed migration scripts before applying them to ensure database integrity across environments.

6) What is lazy loading, and when would you avoid using it?

Expected from candidate: The interviewer wants to test your understanding of data loading strategies and performance trade-offs.

Example answer: Lazy loading automatically loads related data when it is accessed. I would avoid using it in performance-critical scenarios or APIs because it can cause multiple unintended database calls, leading to the N+1 query problem.

7) How do you handle transactions in Entity Framework?

Expected from candidate: The interviewer is evaluating your knowledge of data consistency and error handling.

Example answer: Entity Framework supports transactions through the DbContext and TransactionScope. At my previous job, I used explicit transactions to ensure that multiple related database operations either completed successfully together or were rolled back in case of failure.

8) Explain how dependency injection is used with Entity Framework.

Expected from candidate: The interviewer wants to see how well you understand modern application architecture.

Example answer: Dependency injection is used to inject the DbContext into services or controllers. This improves testability and maintainability by allowing the context to be mocked or replaced without changing business logic.

9) Describe a challenging bug you encountered with Entity Framework and how you resolved it.

Expected from candidate: The interviewer is looking for problem-solving ability and debugging skills.

Example answer: In my last role, I encountered an issue with tracking conflicts when updating detached entities. I resolved it by explicitly setting entity states and ensuring that only one instance of each entity was tracked by the context.

10) How do you decide when Entity Framework is not the right tool?

Expected from candidate: The interviewer wants to understand your judgment and ability to choose appropriate technologies.

Example answer: I consider alternatives when applications require extremely high-performance data access or complex stored procedure logic. In such cases, using a micro-ORM or raw ADO.NET can provide more control and efficiency.


C Sprache

  1. Variablenbereich in C++
  2. C#-gezacktes Array
  3. So laden Sie Visual Studio für C# unter Windows herunter und installieren es
  4. C++ Präprozessor
  5. C++ do…while-Schleife mit Beispielen
  6. C++ für Schleife
  7. Beherrschen von Konstantenzeigern und Zeigern auf Konstanten in C
  8. C - Präprozessoren
  9. C#-Ausdrücke, -Anweisungen und -Blöcke (mit Beispielen)
  10. Überladen von C++-Operatoren