EF Core kullanmaya başlama

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

Windows Visual Studio veya Windows, macos veya Linux üzerinde .NET Core CLI kullanarak öğreticiyi izleyebilirsiniz.

Bu makalenin örneğini GitHub görüntüleyin.

Önkoşullar

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

Yeni proje oluşturma

dotnet new console -o EFGetStarted
cd EFGetStarted

Entity Framework Core yüklensin

EF Core yüklemek için, hedeflemek istediğiniz EF Core veritabanı sağlayıcılarının paketini yüklersiniz. Bu öğretici, .NET Core 'un desteklediği tüm platformlarda çalıştığı için SQLite kullanır. Kullanılabilir sağlayıcıların bir 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 oluşturun
using System;
using System.Collections.Generic;
using Microsoft.EntityFrameworkCore;

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

        public string DbPath { get; private set; }

        public BloggingContext()
        {
            var folder = Environment.SpecialFolder.LocalApplicationData;
            var path = Environment.GetFolderPath(folder);
            DbPath = $"{path}{System.IO.Path.DirectorySeparatorChar}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 List<Post>();
    }

    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, varolan bir veritabanından bir modele ters mühendislik uygulanabilir.

İpucu: Bu uygulama özellikle açıklık açısından basit işler. Bağlantı 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ımlar bir veritabanı oluşturmak için geçişleri kullanı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, bir projede komutu çalıştırmak için gerekli olan DotNet EF ve tasarım paketini de yüklüyor. Bu migrations komut, model için ilk tablo kümesini oluşturmak üzere bir geçişi bir geçişe kattı. database updateKomut veritabanını oluşturur ve yeni geçişi uygular.

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

  • Program. cs ' i açın ve içeriği şu kodla değiştirin:

    using System;
    using System.Linq;
    
    namespace EFGetStarted
    {
        internal class Program
        {
            private static void Main()
            {
                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