EF Core'u Kullanmaya Başlama

Bu öğreticide, Entity Framework Core kullanarak SQLite veritabanına veri erişimi gerçekleştiren bir .NET Core konsol uygulaması oluşturacaksınız.

Öğreticiyi Windows üzerinde Visual Studio'yu veya Windows, macOS veya Linux'ta .NET CLI kullanarak izleyebilirsiniz.

GitHub'da bu makalenin örneğini görüntüleyin.

Önkoşullar

Aşağıdaki yazılımı yükleyin:

Yeni proje oluşturma

dotnet new console -o EFGetStarted
cd EFGetStarted

Entity Framework Core'u yükleme

EF Core'u yüklemek için, hedeflemek istediğiniz EF Core veritabanı sağlayıcılarının paketini yüklersiniz. .NET'in desteklediği tüm platformlarda çalıştığından bu öğreticide SQLite kullanılmaktadır. Kullanılabilir sağlayıcıların listesi için bkz . Veritabanı Sağlayıcıları.

dotnet add package Microsoft.EntityFrameworkCore.Sqlite

Modeli oluşturma

Modeli oluşturan bir bağlam sınıfı ve varlık sınıfları tanımlayın.

  • Proje dizininde aşağıdaki kodla Model.cs dosyasını oluşturun
using Microsoft.EntityFrameworkCore;
using System;
using System.Collections.Generic;

public class BloggingContext : DbContext
{
    public DbSet<Blog> Blogs { get; set; }
    public DbSet<Post> Posts { get; set; }

    public string DbPath { get; }

    public BloggingContext()
    {
        var folder = Environment.SpecialFolder.LocalApplicationData;
        var path = Environment.GetFolderPath(folder);
        DbPath = System.IO.Path.Join(path, "blogging.db");
    }

    // The following configures EF to create a Sqlite database file in the
    // special "local" folder for your platform.
    protected override void OnConfiguring(DbContextOptionsBuilder options)
        => options.UseSqlite($"Data Source={DbPath}");
}

public class Blog
{
    public int BlogId { get; set; }
    public string Url { get; set; }

    public List<Post> Posts { get; } = new();
}

public class Post
{
    public int PostId { get; set; }
    public string Title { get; set; }
    public string Content { get; set; }

    public int BlogId { get; set; }
    public Blog Blog { get; set; }
}

EF Core ayrıca var olan bir veritabanından modele ters mühendislik de yapabilir.

İpucu: Bu uygulama, netlik sağlamak için kasıtlı olarak işleri basit tutar. Bağlan ion dizeleri üretim uygulamaları için kodda depolanmamalıdır. Ayrıca her C# sınıfını kendi dosyasına bölmek isteyebilirsiniz.

Veritabanını oluşturma

Aşağıdaki adımlarda veritabanı oluşturmak için geçişler kullanılır.

  • Aşağıdaki komutları çalıştırın:

    dotnet tool install --global dotnet-ef
    dotnet add package Microsoft.EntityFrameworkCore.Design
    dotnet ef migrations add InitialCreate
    dotnet ef database update
    

    Bu, dotnet ef ve komutu bir projede çalıştırmak için gereken tasarım paketini yükler. komutu, migrations modelin ilk tablo kümesini oluşturmak üzere bir geçişin iskelesini oluşturur. database update komutu veritabanını oluşturur ve yeni geçişi buna uygular.

Oluşturma, okuma, güncelleştirme ve silme

  • Program.cs dosyasını açın ve içeriğini aşağıdaki kodla değiştirin:

    using System;
    using System.Linq;
    
    using var db = new BloggingContext();
    
    // Note: This sample requires the database to be created before running.
    Console.WriteLine($"Database path: {db.DbPath}.");
    
    // Create
    Console.WriteLine("Inserting a new blog");
    db.Add(new Blog { Url = "http://blogs.msdn.com/adonet" });
    db.SaveChanges();
    
    // Read
    Console.WriteLine("Querying for a blog");
    var blog = db.Blogs
        .OrderBy(b => b.BlogId)
        .First();
    
    // Update
    Console.WriteLine("Updating the blog and adding a post");
    blog.Url = "https://devblogs.microsoft.com/dotnet";
    blog.Posts.Add(
        new Post { Title = "Hello World", Content = "I wrote an app using EF Core!" });
    db.SaveChanges();
    
    // Delete
    Console.WriteLine("Delete the blog");
    db.Remove(blog);
    db.SaveChanges();
    

Uygulamayı çalıştırma

dotnet run

Sonraki adımlar