Junior
Entity Framework nedir?
sobes.tech yapay zeka
AI'dan gelen yanıt
Entity Framework (EF), .NET için nesne-ilişkisel hızlandırıcı (ORM) olan, geliştiricilerin büyük ölçüde veri erişim kodu yazmadan .NET nesneleri kullanarak veritabanlarıyla çalışmasına olanak tanıyan bir araçtır. LINQ sorgularını SQL'e dönüştürür ve tersini yapar.
Ana bileşenler ve özellikler:
- DbContext: Veritabanıyla çalışma oturumunu temsil eder, varlıklar için DbSet'leri içerir.
- DbSet: Bağlamda belirli bir türdeki varlıkların koleksiyonunu temsil eder.
- LINQ to Entities: LINQ sözdizimini kullanarak veritabanı sorguları yazmaya olanak tanır.
- Migrations (Code-First Migrations): Veri modeli geliştikçe veritabanı şemasındaki değişiklikleri yönetmeye olanak tanır.
- Değişiklik takibi: EF, veritabanından yüklenen varlıklarda yapılan değişiklikleri otomatik olarak izler ve bu değişiklikleri kaydetmek için uygun SQL komutlarını üretir.
Desteklenen geliştirme yaklaşımları:
- Code-First: Veri modelini C# kodunda tanımlama ve buna dayanarak veritabanı şemasını oluşturma.
- Database-First: Mevcut bir veritabanından .NET modeli oluşturma.
- Model-First: EF tasarımcısında grafiksel bir model oluşturma ve hem kodu hem de veritabanı şemasını oluşturma. (EF Core'da daha az yaygın)
Avantajlar:
- Veri erişimi detaylarından soyutlama sayesinde geliştirmeyi hızlandırır.
- Güçlü tip güvenliği ve derleme zamanında doğrulama.
- Veri modelini ve değişikliklerini uygun şekilde yönetme.
EF Core'un kullanım örneği (Code-First paradigması):
// Veri modelinin tanımı
public class Blog
{
public int BlogId { get; set; }
public string Url { get; set; }
public List<Post> Posts { get; set; }
}
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; }
}
// Veritabanı bağlamının tanımı
public class BloggingContext : DbContext
{
public DbSet<Blog> Blogs { get; set; }
public DbSet<Post> Posts { get; set; }
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
// SQLite için örnek yapılandırma
optionsBuilder.UseSqlite("Data Source=blogging.db");
}
}
// Kodda kullanım örneği
// using (var context = new BloggingContext())
// {
// // Veri ekleme
// context.Blogs.Add(new Blog { Url = "http://example.com/blog" });
// context.SaveChanges();
//
// // Veri sorgulama
// var blog = context.Blogs
// .OrderBy(b => b.BlogId)
// .First();
// }
EF Core, çapraz platform, hafif ve genişletilebilir bir Entity Framework sürümüdür ve yeni .NET uygulamaları için önerilmektedir.