<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://mediawiki.wissen-ahrensburg.de/index.php?action=history&amp;feed=atom&amp;title=Webframeworkk%2FASP.NET_Core%2FEntity_Framework_Core</id>
	<title>Webframeworkk/ASP.NET Core/Entity Framework Core - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://mediawiki.wissen-ahrensburg.de/index.php?action=history&amp;feed=atom&amp;title=Webframeworkk%2FASP.NET_Core%2FEntity_Framework_Core"/>
	<link rel="alternate" type="text/html" href="https://mediawiki.wissen-ahrensburg.de/index.php?title=Webframeworkk/ASP.NET_Core/Entity_Framework_Core&amp;action=history"/>
	<updated>2026-08-19T17:33:56Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in Dokument</subtitle>
	<generator>MediaWiki 1.46.0</generator>
	<entry>
		<id>https://mediawiki.wissen-ahrensburg.de/index.php?title=Webframeworkk/ASP.NET_Core/Entity_Framework_Core&amp;diff=275&amp;oldid=prev</id>
		<title>imported&gt;Import: Version 200</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.wissen-ahrensburg.de/index.php?title=Webframeworkk/ASP.NET_Core/Entity_Framework_Core&amp;diff=275&amp;oldid=prev"/>
		<updated>2026-02-26T04:37:16Z</updated>

		<summary type="html">&lt;p&gt;Version 200&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;#039;&amp;#039;Hinweis: Diese Inhalte wurden mit Unterstützung von Künstlicher Intelligenz erstellt und redaktionell überprüft (Transparenzhinweis gemäß Art. 50 EU AI Act).&amp;#039;&amp;#039;&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Dieses Tutorial bietet einen umfassenden Überblick über &amp;#039;&amp;#039;&amp;#039;Entity Framework Core (EF Core)&amp;#039;&amp;#039;&amp;#039;, das moderne, leichtgewichtige und plattformübergreifende Object-Relational Mapper (ORM) Framework für .NET.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
== 1. Einführung in EF Core ==&lt;br /&gt;
&lt;br /&gt;
EF Core vereinfacht die Interaktion mit Datenbanken, indem es Ihnen ermöglicht, mit Daten als .NET-Objekte (Entities) zu arbeiten, anstatt rohe SQL-Abfragen zu schreiben.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Vorteile:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Produktivität:&amp;#039;&amp;#039;&amp;#039; Weniger Boilerplate-Code für Datenbankoperationen.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Objektorientiert:&amp;#039;&amp;#039;&amp;#039; Nutzung vertrauter C#-Konzepte.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Typsicherheit:&amp;#039;&amp;#039;&amp;#039; LINQ-Abfragen werden zur Kompilierzeit geprüft.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Plattformübergreifend:&amp;#039;&amp;#039;&amp;#039; Unterstützt SQL Server, SQLite, PostgreSQL, MySQL usw.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Nachteile:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Abstraktions-Overhead:&amp;#039;&amp;#039;&amp;#039; Kann bei komplexen Abfragen weniger effizient sein als handgeschriebenes SQL.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Lernkurve:&amp;#039;&amp;#039;&amp;#039; Erfordert Verständnis der internen Funktionsweise für optimale Performance.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
== 2. Die Architektur: Ein Drei-Schichten-Modell ==&lt;br /&gt;
&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Konzeptionelles Modell (Entity Model):&amp;#039;&amp;#039;&amp;#039; Ihre C#-Klassen, die das Datenbankschema repräsentieren.&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Mapping:&amp;#039;&amp;#039;&amp;#039; Die Brücke zwischen Ihren Klassen und der Datenbank (konfiguriert über Data Annotations oder Fluent API).&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Speichermodell (Database Schema):&amp;#039;&amp;#039;&amp;#039; Die tatsächliche Struktur in der Datenbank (Tabellen, Spalten, Constraints).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
== 3. DbContext und DbSet ==&lt;br /&gt;
&lt;br /&gt;
Der &amp;lt;code&amp;gt;DbContext&amp;lt;/code&amp;gt; ist das Herzstück von EF Core. Er fungiert als Sitzung mit der Datenbank.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Hauptaufgaben:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
* Verbindungsmanagement.&lt;br /&gt;
* Änderungsverfolgung (Change Tracking).&lt;br /&gt;
* Übersetzung von LINQ in SQL.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Beispiel: PersonsDbContext&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;csharp&amp;quot;&amp;gt;public class PersonsDbContext : DbContext&lt;br /&gt;
{&lt;br /&gt;
    public PersonsDbContext(DbContextOptions options) : base(options) { }&lt;br /&gt;
&lt;br /&gt;
    public DbSet&amp;lt;Country&amp;gt; Countries { get; set; }&lt;br /&gt;
    public DbSet&amp;lt;Person&amp;gt; Persons { get; set; }&lt;br /&gt;
&lt;br /&gt;
    protected override void OnModelCreating(ModelBuilder modelBuilder)&lt;br /&gt;
    {&lt;br /&gt;
        base.OnModelCreating(modelBuilder);&lt;br /&gt;
        modelBuilder.Entity&amp;lt;Country&amp;gt;().ToTable(&amp;quot;Countries&amp;quot;);&lt;br /&gt;
        modelBuilder.Entity&amp;lt;Person&amp;gt;().ToTable(&amp;quot;Persons&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
== 4. Connection Strings ==&lt;br /&gt;
&lt;br /&gt;
Connection Strings definieren, wo sich Ihre Datenbank befindet und wie darauf zugegriffen wird.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Empfohlener Speicherort:&amp;#039;&amp;#039;&amp;#039; &amp;lt;code&amp;gt;appsettings.json&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;{&lt;br /&gt;
  &amp;quot;ConnectionStrings&amp;quot;: {&lt;br /&gt;
    &amp;quot;DefaultConnection&amp;quot;: &amp;quot;Data Source=(localdb)\\MSSQLLocalDB;Initial Catalog=PersonsDatabase;Integrated Security=True;&amp;quot;&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Registrierung in &amp;lt;code&amp;gt;Program.cs&amp;lt;/code&amp;gt;:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;csharp&amp;quot;&amp;gt;builder.Services.AddDbContext&amp;lt;PersonsDbContext&amp;gt;(options =&amp;gt; {&lt;br /&gt;
    options.UseSqlServer(builder.Configuration.GetConnectionString(&amp;quot;DefaultConnection&amp;quot;));&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
== 5. Entwicklungsansätze ==&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Code-First:&amp;#039;&amp;#039;&amp;#039; Sie schreiben C#-Klassen, EF Core erstellt die Datenbank. Ideal für neue Projekte.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Database-First:&amp;#039;&amp;#039;&amp;#039; Sie starten mit einer bestehenden Datenbank, EF Core generiert die Klassen. Ideal für Legacy-Systeme.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
== 6. Migrationen und Seed-Daten ==&lt;br /&gt;
&lt;br /&gt;
Migrationen ermöglichen es, Schemaänderungen versioniert zu verwalten.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Wichtige Befehle (Package Manager Console):&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;Add-Migration InitialCreate&amp;lt;/code&amp;gt;: Erstellt ein Skript für die aktuellen Modelländerungen.&lt;br /&gt;
* &amp;lt;code&amp;gt;Update-Database&amp;lt;/code&amp;gt;: Wendet die Migrationen auf die Datenbank an.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Seed-Daten (Initialdaten):&amp;#039;&amp;#039;&amp;#039; Nutzen Sie &amp;lt;code&amp;gt;HasData&amp;lt;/code&amp;gt; in &amp;lt;code&amp;gt;OnModelCreating&amp;lt;/code&amp;gt;, um Tabellen vorab zu befüllen (z. B. Länderlisten).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;csharp&amp;quot;&amp;gt;modelBuilder.Entity&amp;lt;Country&amp;gt;().HasData(&lt;br /&gt;
    new Country() { CountryID = Guid.NewGuid(), CountryName = &amp;quot;Deutschland&amp;quot; }&lt;br /&gt;
);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
== 7. Fluent API vs. Data Annotations ==&lt;br /&gt;
&lt;br /&gt;
Während Data Annotations (&amp;lt;code&amp;gt;[Key]&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;[Required]&amp;lt;/code&amp;gt;) einfach sind, bietet die &amp;#039;&amp;#039;&amp;#039;Fluent API&amp;#039;&amp;#039;&amp;#039; mehr Flexibilität direkt im &amp;lt;code&amp;gt;DbContext&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Beispiel Fluent API:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;csharp&amp;quot;&amp;gt;modelBuilder.Entity&amp;lt;Person&amp;gt;()&lt;br /&gt;
    .Property(p =&amp;gt; p.TIN)&lt;br /&gt;
    .HasColumnName(&amp;quot;TaxIdentificationNumber&amp;quot;)&lt;br /&gt;
    .HasColumnType(&amp;quot;varchar(8)&amp;quot;)&lt;br /&gt;
    .IsRequired();&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
== 8. CRUD-Operationen im Controller ==&lt;br /&gt;
&lt;br /&gt;
Dank EF Core lassen sich Datenbankzugriffe schlank im Service-Layer implementieren.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Beispiel: Person hinzufügen (Create)&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;csharp&amp;quot;&amp;gt;public async Task&amp;lt;PersonResponse&amp;gt; AddPerson(PersonAddRequest personRequest)&lt;br /&gt;
{&lt;br /&gt;
    Person person = personRequest.ToPerson();&lt;br /&gt;
    person.PersonID = Guid.NewGuid();&lt;br /&gt;
    &lt;br /&gt;
    _db.Persons.Add(person);&lt;br /&gt;
    await _db.SaveChangesAsync();&lt;br /&gt;
    &lt;br /&gt;
    return person.ToPersonResponse();&lt;br /&gt;
}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Eager Loading mit &amp;lt;code&amp;gt;Include()&amp;lt;/code&amp;gt;:&amp;#039;&amp;#039;&amp;#039; Um verwandte Daten (z. B. das Land einer Person) sofort mitzuladen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;csharp&amp;quot;&amp;gt;var persons = await _db.Persons.Include(p =&amp;gt; p.Country).ToListAsync();&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
== 9. Fortgeschrittene Funktionen ==&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Stored Procedures&amp;#039;&amp;#039;&amp;#039; EF Core erlaubt die Ausführung von Stored Procedures über &amp;lt;code&amp;gt;FromSqlRaw&amp;lt;/code&amp;gt; (für Abfragen) oder &amp;lt;code&amp;gt;ExecuteSqlRaw&amp;lt;/code&amp;gt; (für Befehle).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;csharp&amp;quot;&amp;gt;var persons = _db.Persons.FromSqlRaw(&amp;quot;EXECUTE [dbo].[GetAllPersons]&amp;quot;).ToList();&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Berichterstellung (PDF &amp;amp;amp; CSV)&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;PDF:&amp;#039;&amp;#039;&amp;#039; Mit Bibliotheken wie &amp;#039;&amp;#039;&amp;#039;Rotativa&amp;#039;&amp;#039;&amp;#039; können Razor-Views direkt als PDF gerendert werden (&amp;lt;code&amp;gt;return new ViewAsPdf(...)&amp;lt;/code&amp;gt;).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;CSV:&amp;#039;&amp;#039;&amp;#039; Mit &amp;#039;&amp;#039;&amp;#039;CsvHelper&amp;#039;&amp;#039;&amp;#039; können Daten effizient in Streams geschrieben werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
== 10. Best Practices &amp;amp;amp; Tipps ==&lt;br /&gt;
&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Asynchrone Programmierung:&amp;#039;&amp;#039;&amp;#039; Nutzen Sie immer &amp;lt;code&amp;gt;ToListAsync()&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;SaveChangesAsync()&amp;lt;/code&amp;gt; etc., um die Skalierbarkeit zu erhöhen.&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Thin Controllers:&amp;#039;&amp;#039;&amp;#039; Lagern Sie die EF-Logik in separate Service-Klassen aus.&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;DTOs nutzen:&amp;#039;&amp;#039;&amp;#039; Verwenden Sie &amp;lt;code&amp;gt;Request&amp;lt;/code&amp;gt;- und &amp;lt;code&amp;gt;Response&amp;lt;/code&amp;gt;-Modelle, um Ihre Datenbank-Entities vor der UI zu verbergen.&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Referenzielle Integrität:&amp;#039;&amp;#039;&amp;#039; Achten Sie auf Primär- und Fremdschlüssel-Konfigurationen, um Datenkonsistenz zu wahren.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;Tutorial erstellt für Thorsten - Viel Erfolg bei der Entwicklung mit ASP.NET Core MVC!&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&amp;#039;&amp;#039;Hinweis: Diese Inhalte wurden mit Unterstützung von Künstlicher Intelligenz erstellt und redaktionell überprüft (Transparenzhinweis gemäß Art. 50 EU AI Act).&amp;#039;&amp;#039;&lt;/div&gt;</summary>
		<author><name>imported&gt;Import</name></author>
	</entry>
	<entry>
		<id>https://mediawiki.wissen-ahrensburg.de/index.php?title=Webframeworkk/ASP.NET_Core/Entity_Framework_Core&amp;diff=3213&amp;oldid=prev</id>
		<title>Thorsten: Die Seite wurde neu angelegt: „Dieses Tutorial bietet einen umfassenden Überblick über &#039;&#039;&#039;Entity Framework Core (EF Core)&#039;&#039;&#039;, das moderne, leichtgewichtige und plattformübergreifende Object-Relational Mapper (ORM) Framework für .NET.  ----  == 1. Einführung in EF Core == EF Core vereinfacht die Interaktion mit Datenbanken, indem es Ihnen ermöglicht, mit Daten als .NET-Objekte (Entities) zu arbeiten, anstatt rohe SQL-Abfragen zu schreiben.  &#039;&#039;&#039;Vorteile:&#039;&#039;&#039; * &#039;&#039;&#039;Produktivität:&#039;&#039;&#039;…“</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.wissen-ahrensburg.de/index.php?title=Webframeworkk/ASP.NET_Core/Entity_Framework_Core&amp;diff=3213&amp;oldid=prev"/>
		<updated>2026-02-26T04:37:16Z</updated>

		<summary type="html">&lt;p&gt;Die Seite wurde neu angelegt: „Dieses Tutorial bietet einen umfassenden Überblick über &amp;#039;&amp;#039;&amp;#039;Entity Framework Core (EF Core)&amp;#039;&amp;#039;&amp;#039;, das moderne, leichtgewichtige und plattformübergreifende Object-Relational Mapper (ORM) Framework für .NET.  ----  == 1. Einführung in EF Core == EF Core vereinfacht die Interaktion mit Datenbanken, indem es Ihnen ermöglicht, mit Daten als .NET-Objekte (Entities) zu arbeiten, anstatt rohe SQL-Abfragen zu schreiben.  &amp;#039;&amp;#039;&amp;#039;Vorteile:&amp;#039;&amp;#039;&amp;#039; * &amp;#039;&amp;#039;&amp;#039;Produktivität:&amp;#039;&amp;#039;&amp;#039;…“&lt;/p&gt;
&lt;a href=&quot;https://mediawiki.wissen-ahrensburg.de/index.php?title=Webframeworkk/ASP.NET_Core/Entity_Framework_Core&amp;amp;diff=3213&amp;amp;oldid=275&quot;&gt;Änderungen zeigen&lt;/a&gt;</summary>
		<author><name>Thorsten</name></author>
	</entry>
</feed>