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 updateBu, bir projede komutu çalıştırmak için gerekli olan DotNet EF ve tasarım paketini de yüklüyor. Bu
migrationskomut, 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
- bir web uygulamasında EF Core kullanmak için ASP.NET Core öğreticisini izleyin
- LINQ sorgu ifadeleri hakkında daha fazla bilgi edinin
- Gerekli ve en fazla uzunluk gibi Işlemleri belirtmek için modelinizi yapılandırın
- Modelinizi değiştirdikten sonra veritabanı şemasını güncelleştirmek için geçişleri kullanma