En İyi 50 Entity Framework Mülakat Sorusu ve Cevabı (2026)

Entity Framework Mülakatlarında En Sık Sorulan Sorular ve Cevaplar

Entity Framework mülakatına hazırlanmak, gerçek yetenekleri ortaya çıkaracak soruları önceden tahmin etmek anlamına gelir. Entity Framework mülakat soruları, adayların düşünme biçimlerini, performans farkındalığını ve kavramları nasıl pratiğe döktüklerini ortaya koyar.

Entity Framework'e hakim olmak, veri odaklı platformlardan bulut hizmetlerine kadar modern geliştirmenin çeşitli alanlarında fırsatlar yaratır. Pratik deneyim, analitik yeteneği geliştirir, teknik derinliği güçlendirir ve ekipleri destekler. İşe alım liderleri, uygulamalı problem çözme, ölçeklenebilir tasarım, genç çalışanlara mentorluk yapma ve yeni mezunlar için büyüme yollarına değer verir.
Daha fazla oku…

👉 Ücretsiz PDF İndir: Entity Framework Mülakat Soruları ve Cevapları

Entity Framework Mülakatlarında En Sık Sorulan Sorular ve Cevaplar

1) Entity Framework nedir ve neden kullanılır?

Varlık Çerçevesi (EF) Microsoft'nin ORM'si (Nesne-İlişkisel Harita)ping) .NET için bir çerçeve Geliştiricilerin ham SQL yerine kesin türde tanımlanmış .NET nesneleri olarak verilerle çalışmasına olanak tanıyarak veritabanı etkileşimini basitleştirir.Bu karın kaslarıtracEF, geliştiricilerin tanıdık C# yapılarını kullanarak CRUD (Oluşturma, Okuma, Güncelleme, Silme) işlemlerini gerçekleştirmelerini sağlar ve çerçeve, bu işlemleri arka planda optimize edilmiş SQL sorgularına çevirmeyi üstlenir. EF, tekrarlayan veri erişim kodunu azaltır, bakım kolaylığını artırır ve derleme zamanı tür güvenliğini sağlamaya yardımcı olur.

Örneğin, SQL yazmak yerine şunları kullanabilirsiniz:

var customers = context.Customers.Where(c => c.IsActive).ToList();

EF bu LINQ sorgusunu SQL'e çevirecek, veritabanına karşı çalıştıracak ve sonuçları nesne olarak döndürecektir.


2) Arasındaki farkı açıklayın Code İlk yaklaşım, Veritabanı Öncelikli yaklaşım ve Model Öncelikli yaklaşım.

Entity Framework üç ana geliştirme yaklaşımını destekler:

Yaklaşım Ne zaman kullanılır? Ne oluyor
Code Ad Yeni projeler veya alan odaklı tasarım Varlık sınıflarını siz tanımlarsınız. EF, koddan veritabanı şemasını oluşturur.
Veritabanı Önceliği Mevcut veritabanı EF, mevcut bir şemadan varlık sınıfları ve bağlam oluşturur.
Önce Model Görsel tasarımı tercih ettiğinizde Modeli görsel bir tasarımcıda (Entity Designer) tasarlarsınız ve EF hem sınıfları hem de veritabanını oluşturur.

Her yaklaşım farklı senaryolara hizmet eder: Code Ad Çevik yazılım geliştirme alanında popülerdir. Veritabanı Önceliği eski veritabanlarında tercih edilir ve Önce Model Görsel modellemenin önemli olduğu durumlara uygundur.


3) DbContext nedir ve EF'de hangi rolü oynar?

DbContext Bu, yönetimi sağlayan birincil sınıftır. veritabanıyla oturum, tracks varlığı değişikliklerini algılar ve verilerin veritabanına geri kaydedilmesini koordine eder. C# uygulamanız ile veritabanı arasında bir köprü görevi görür. DbContextSiz tanımlıyorsunuz. DbSet<TEntity> Özellikler, varlık koleksiyonlarını temsil eder ve veritabanındaki tablolara karşılık gelir.

Örnek:

public class AppDbContext : DbContext
{
    public DbSet<Product> Products { get; set; }
}

Burada, Products CRUD işlemlerini gerçekleştirmek için bir koleksiyon görevi görür. EF bu bağlamı şu amaçlarla kullanır: track nesne durumu ve SQL komutları oluşturun SaveChanges().


4) Entity Framework'te migrasyonlar nedir ve nasıl kullanılırlar?

Göç bir mekanizmadır track ve uygulayın şema değişiklikleri Zaman içinde veritabanına. Modeliniz geliştikçe, geçişler SQL komut dosyalarını manuel olarak değiştirmeden veritabanını senkronize tutmaya yardımcı olur. Code Öncelikle şu komutları kullanıyorsunuz:

Add-Migration InitialCreate
Update-Database

Bu işlem, şema değişikliklerini tanımlayan geçiş sınıfları oluşturur ve bunları veritabanına uygular. Geçişler, veritabanı şeması için sürüm kontrolü sağlar ve işbirlikçi geliştirmeyi kolaylaştırır.


5) Tembel Yükleme (Lazy Loading), İstekli Yükleme (Eager Loading) ve Açık Yükleme (Explicit Loading) kavramlarını açıklayın.

EF'de ilgili verilerin verimli bir şekilde yüklenmesi çok önemlidir. İşte bir karşılaştırma:

Stratejileri Çalıştığında Tipik Kullanım
tembel Yükleme İlgili veriler ilk erişimde yüklendi. İlgili verilere her zaman ihtiyaç duyulmayabileceği durumlarda kullanın.
İstekli Yükleniyor İlgili veriler önceden şu yolla yüklenir: .Include() İlgili verilere ihtiyacınız olduğunu bildiğiniz durumlarda kullanın.
Açık Yükleme Sorgudan sonra manuel olarak yüklendi. İlgili verilerin tam olarak ne zaman yükleneceğini kontrol etme olanağı sağlar.

Örneğin:

var orders = context.Orders.Include(o => o.Customer).ToList(); // Eager

Tembel yükleme, ilk sorguları azaltmaya yardımcı olur, ancak bazı sorunlara yol açabilir. N+1 sorgu sorunları dikkatli kullanılmazsa.


6) Değişim nedir? tracEntity Framework'te kral kimdir?

Düzenle tracKral, EF'nin iç mekanizmasıdır. varlık durum değişikliklerini izlemek Bir sorgu yürütüldükten sonra. Bir varlık alındığında... DbContext, bu tracÖzelliklerinde yapılan tüm değişiklikler kaydedilir ve bu değişiklikler bildirildiğinde... SaveChanges() çağrıldığında, EF uygun SQL sorgusunu oluşturur. INSERT, UPDATEya da DELETE Açıklamalar. Sadece okunabilir senaryolar için, tracKrala gerek yok, AsNoTracking() Değişiklikleri devre dışı bırakarak performansı iyileştirir. trackral.


7) Entity Framework eşzamanlılık çakışmalarını nasıl ele alıyor?

Eşzamanlılık kontrolü, aynı veriyi güncelleyen birden fazla kullanıcının birbirlerinin değişikliklerini istemeden geçersiz kılmamasını sağlar. EF bunu şu şekilde kullanır: iyimser eşzamanlılık varsayılan olarak. Yaygın bir yaklaşım, bir eklemeyi içerir. eşzamanlılık belirteci (gibi RowVersion (Zaman damgası). EF bu belirteci kontrol eder. SaveChanges()ve eğer veritabanı sürümünden farklıysa, DbUpdateConcurrencyException Çakışmayı gösteren bir hata fırlatılır. Geliştiriciler daha sonra bu istisnayı işleyerek yeniden deneme yapabilir veya veri farklılıklarını çözebilirler.


8) EF'de gezinme özellikleri nelerdir?

Gezinti özellikleri, varlıklar arasındaki ilişkileri tanımlar. Bu özellikler, EF'nin şunları yapmasına olanak tanır: derneklerde gezinmek (Örneğin, bire çok ilişki) manuel birleştirmeler olmadan:

public class Order
{
    public int Id { get; set; }
    public Customer Customer { get; set; }
}

Burada, Customer Bu, bağlantı kuran bir gezinme özelliğidir. Order ilgili CustomerEF, sorgular sırasında otomatik olarak ilişkiler kurmak ve birleştirmeler yapmak için bu özellikleri kullanır. Gezinme özellikleri de bununla birlikte çalışır. Yabancı anahtarlar İlişkileri modellemek.


9) AsNo'nun amacı nedir?Trackral()?

AsNoTracking() değişikliği devre dışı bırakır tracKral için bir sorgu, bu da faydalıdır salt okunur Alınan varlıkları güncelleme niyetinde olmadığınız işlemler. Bu, bellek kullanımını azaltarak performansı artırır ve tracYüksek işlem yükü. Özellikle büyük veri kümelerini değiştirmeden çekerken çok kullanışlıdır.


10) Derlenmiş sorgular nedir ve ne zaman kullanılmalıdır?

Derlenmiş sorgular, performans optimizasyonu tekniğidir. Bir LINQ sorgusu yürütüldüğünde, EF genellikle onu her seferinde SQL'e çevirir. Derlenmiş sorgularla, bu çeviri bir kez yapılır ve ortaya çıkan temsilci yeniden kullanılır; bu da sık yürütülen veya karmaşık sorgular için ek yükü azaltır. Bunları şu alanlarda kullanabilirsiniz: yüksek trafik Aynı sorgunun farklı parametrelerle tekrar tekrar çalıştırıldığı senaryolar.


11) Entity Framework'te varlık durumları nelerdir ve SaveChanges() işlevini nasıl etkilerler?

Varlık Çerçevesi tracher varlığın ks belirtmek, bildirmek Veritabanı işlemlerinden hangisinin gerçekleştirileceğine karar vermek için SaveChanges()Başlıca varlık durumları şunlardır:

Eyalet Açıklama OperaTetiklendi
Katma Eklenecek yeni varlık INSERT
Modifiye Mevcut varlık güncellendi. UPDATE
Silindi Kaldırılmak üzere işaretlenmiş varlık DELETE
değişmemiş Herhangi bir değişiklik tespit edilmedi. Hayır
Bağımsız Değil tracbağlam tarafından Hayır

Aradığın zaman SaveChanges()EF, varlık durumlarını inceler ve ilgili SQL komutlarını yürütür. Örneğin, bir veritabanına yeni bir varlık eklendiğinde... DbSet işaretlenecek Katma, bir INSERT sorgu.

Örnek:

context.Entry(product).State = EntityState.Modified;
context.SaveChanges();

Bu işlem, ilgili varlığın veritabanı kaydını açıkça günceller.

Devletleri anlamak Veri senkronizasyonu ve performans üzerinde daha iyi kontrol sağlar.


12) Entity Framework kullanmanın avantajları ve dezavantajları nelerdir?

Entity Framework, kullanım amacınıza bağlı olarak güçlü avantajlar sunarken bazı dezavantajları da beraberinde getiriyor.

Avantajlar Dezavantajlar
LINQ ve nesne modelleri aracılığıyla veri erişimini basitleştirir. Ham ADO.NET'e kıyasla performans yükü.
Gereksiz SQL kodlarını azaltır. Karmaşık sorgular verimsiz SQL sorguları üretebilir.
Birden fazla veritabanı sağlayıcısını destekler. Oluşturulan SQL ifadelerinde hata ayıklamak daha zor.
Güçlü tip denetimi, derleme zamanı güvenliğini artırır. Büyük ekiplerde göç kaynaklı çatışmalar yaşanabilir.
Hızlı prototiplemeyi mümkün kılarping 'da Code İlk. Less İnce ayarlı sorgular üzerinde kontrol.

Maksimum performans gerektiren büyük ölçekli sistemler için geliştiriciler yine de farklı bileşenleri bir arada kullanabilirler. EF ile ham SQL optimizasyon için.


13) Entity Framework ilişkileri (bire bir, bire çok, çoktan çoğa) nasıl ele alır?

Entity Framework ilişkileri şu yollarla yönetir: navigasyon özellikleri ve yabancı anahtar ilişkileri.

İlişki türleri şunlardır:

İlişki Türü Açıklama Örnek E-posta
Bire bir Her varlık örneğinin bir ilişkili varlığı vardır. UserUserProfile
Bire Çok Bir varlık, birden fazla başka varlıkla ilişkilidir. CustomerOrders
Çoktan Çoğa Birden fazla varlık birbiriyle ilişkilidir. StudentCourse

A örneği Bire Çok ilişki:

public class Customer
{
    public int CustomerId { get; set; }
    public ICollection<Order> Orders { get; set; }
}

EF, yabancı anahtarları otomatik olarak oluşturur ve yönetir. basamaklı silme kuralları yapılandırmaya bağlı olarak.

Ayrıca kullanabilirsiniz akıcı API daha açık bir ilişki haritası içinping.


14) LINQ to Entities ile LINQ to SQL arasındaki fark nedir?

Özellik Varlıklara LINQ LINQ'dan SQL'e
Desteklenen Veritabanları Çoklu (SQL Server, Oracle, MySQLVb.) Yalnızca SQL Server
Temel Çerçeve Varlık Çerçevesi ADO.NET
Model Kavramsal Varlık Modeli Sadece veritabanı tabloları
Haritaping Karmaşık haritaping (miras, ilişkiler) Doğrudan tablo haritasıping
Gelecekteki Destek Aktif olarak destekleniyor Onaylanmamış

Varlıklara LINQ Entity Framework'ün bir parçasıdır ve daha çok yönlüdür, LINQ'dan SQL'e Bu özellik SQL Server ve daha basit kullanım durumlarıyla sınırlıdır.

Bu nedenle, kurumsal düzeyde geliştirme için LINQ to Entities önerilir.


15) ObjectContext ve DbContext arasındaki fark nedir?

Özellik NesneBağlamı DbContext
iskelet Önceki EF sürümleri EF 4.1+'da Basitleştirilmiş API
karmaşa Daha ayrıntılı Hafif ve kolay
Performans Biraz daha hızlı ama kullanımı daha zor. Minimum ek maliyetle basitleştirildi.
Düzenle Trackral Manuel yapılandırma gerekli Otomatik trackral
Tercih Edilen Kullanım Eski sistemler Modern EF / EF Core projeleri

DbContext içten sarar ObjectContext Ancak daha temiz ve sezgisel bir API sunar. Günümüzdeki çoğu .NET uygulaması bunu kullanmalıdır. DbContext.


16) Entity Framework'te bir varlığın yaşam döngüsünü açıklayın.

Bir varlığın yaşam döngüsü, onun özelliklerini tanımlar. durum geçişleri Yaratılıştan kalıcılığa:

  1. Yaratılış – Varlık bellekte örneklendirilir (durum: Bağımsız).
  2. Ek dosya – Bağlama şu yolla eklendi: DbSet.Add() (durum: Katma).
  3. Değişiklik – Değişiklikler otomatik olarak algılandı (durum: Modifiye).
  4. Sebat - SaveChanges() çağrıldı → SQL komutları yürütüldü.
  5. silme – İşaretlenmiş varlık Silindi ve veritabanından kaldırıldı.

Bu yaşam döngüsünü anlamak, veri sorunlarının giderilmesine ve EF bağlam yönetiminin optimize edilmesine yardımcı olur.


17) Entity Framework'te Fluent API'nin kullanım amacı nedir?

MKS akıcı API Model ilişkilerini, kısıtlamaları ve haritaları yapılandırmak için programatik bir yol sağlar.pings, genellikle şu alanlarda kullanılır: OnModelCreating() yönteminiz DbContext.

Bu, yapılandırmalar üzerinde ayrıntılı kontrol sağlar. veri ek açıklamaları İfade edemiyorum.

Örnek:

modelBuilder.Entity<Customer>()
    .HasMany(c => c.Orders)
    .WithOne(o => o.Customer)
    .HasForeignKey(o => o.CustomerId);

Fluent API, özellikle yapılandırma konusunda oldukça güçlüdür. bileşik anahtarlar, çoklu ilişkiler, ve basamaklı kurallar.


18) Entity Framework'te Veri Ek Açıklamaları (Data Annotations) nedir?

Veri açıklamaları şunlardır: öznitelikleri Şema davranışını tanımlamak için doğrudan model sınıflarına veya özelliklerine uygulanırlar. Akıcı API'den daha basittirler ancak daha az esnektirler.

Örnek:

public class Product
{
    [Key]
    public int ProductId { get; set; }

    [Required]
    [StringLength(50)]
    public string Name { get; set; }
}

Ek açıklamalar anahtarları, dize uzunluklarını, gerekli alanları ve ilişkileri tanımlar. Gelişmiş durumlar için geliştiriciler genellikle bunları birleştirir. Veri Ek Açıklamaları ve akıcı API.


19) Arasındaki fark nedir? tracked ve untracEF Core'da hangi varlıklar (ked entities) bulunur?

Menşei Açıklama Kullanım çantası
Tracked Varlıklar Gözetimi altında DbContext değişiklikler için. Güncellemeler için varsayılan davranış.
Untracked Varlıklar İzlenmiyor; şu şekilde alındı: .AsNoTracking(). Yalnızca okuma işlemleri için idealdir.

TracKed varlıkları daha fazla bellek tüketir ancak EF'nin değişiklikleri otomatik olarak algılamasına olanak tanır.

Untracked varlıkları geliştirir performans Yüksek okuma, düşük güncelleme senaryolarında.


20) Entity Framework'te ham SQL sorgularını nasıl çalıştırabilirsiniz?

Entity Framework, özel veya performans açısından kritik sorgular için ham SQL çalıştırmaya olanak tanır.

var result = context.Products
    .FromSqlRaw("SELECT * FROM Products WHERE Price > 100")
    .ToList();

Sorgu içermeyen komutlar için:

context.Database.ExecuteSqlRaw("DELETE FROM Products WHERE Discontinued = 1");

Bu özelliği dikkatli kullanın, aksi takdirde şunlardan kaçınabilirsiniz: SQL enjeksiyonu ve veritabanından bağımsız esnekliği koruyun.


21) Entity Framework ile Entity Framework Core arasındaki fark nedir?

Entity Framework (EF) ve Entity Framework Core (EF Core), mimarileri, yetenekleri ve platformlar arası destekleri bakımından farklılık gösterir.

Özellik Varlık Çerçevesi 6 (EF6) Entity Framework Çekirdeği
Platform Yalnızca .NET Framework Çapraz platform (.NET 5/6/7)
Archidoku ObjectContext'e dayanmaktadır. Hafif ve modüler
Performans Bazı sorgularda daha yavaş Optimize edilmiş sorgu oluşturma
LINQ Desteği Olgun ama sınırlı Geliştirilmiş çeviri ve eşzamansızlık
Veritabanı Sağlayıcıları SQL Server, Oracle Çoklu (MySQL, PostgreSQL, SQLiteVb.)
Özellikler Olgun (örneğin, tembel yükleme) Modern (örneğin, gölge özellikleri, genel filtreler)

EF Core şudur: modern, aktif olarak geliştirilen Esnekliği ve performansı nedeniyle yeni .NET projeleri için önerilen sürümdür.


22) Entity Framework'te işlemler nasıl çalışır?

Entity Framework'teki işlemler şunları sağlar: veri bütünlüğü Birden fazla işlemin aynı anda başarılı veya başarısız olması gerektiğinde. Varsayılan olarak, EF bunu sarmalar. SaveChanges() Bir işlem içinde. Manuel kontrol için:

using (var transaction = context.Database.BeginTransaction())
{
    try
    {
        context.Customers.Add(new Customer());
        context.SaveChanges();

        context.Orders.Add(new Order());
        context.SaveChanges();

        transaction.Commit();
    }
    catch
    {
        transaction.Rollback();
    }
}

Bu, atomikliği sağlar; herhangi bir komut başarısız olursa, tüm değişiklikler geri alınır.

EF ayrıca şunlarla da entegre olur: Sistem.İşlemler Dağıtılmış işlem desteği için.


23) Entity Framework'te TPH, TPT ve TPC kalıtım stratejilerini açıklayınız.

Entity Framework üç ana kalıtım haritasını destekler.ping Sınıf hiyerarşilerini modellemeye yönelik stratejiler.

Stratejileri Açıklama Örnek E-posta Avantajlar Dezavantajlar
TPH (Hiyerarşi Başına Tablo) Tüm sınıflar aynı tabloyu paylaşır; bir ayırıcı sütun türü belirler. EF Core'da yaygın olarak bulunur. Basit, hızlı sorgular. Tablo büyük ve seyrek hale gelebilir.
TPT (Tür Başına Tablo) Her alt sınıfın kendine ait bir tablosu vardır. Türetilen her sınıf ayrı ayrı eşlenir. Normalleştirilmiş şema. Büyük hiyerarşilerde birleştirme işlemleri daha yavaş gerçekleşir.
TPC (Beton Sınıfına Göre Tablo) Her sınıfın, yinelenen sütunlara sahip kendi tablosu vardır. Her varlık ayrı ayrı eşleştirildi. Yüksek performanslı okuma işlemleri. Veri yedekliliği.

Çoğu geliştirici tercih eder TPH Normalizasyon veya performans ihtiyaçları aksini gerektirmediği sürece, basitliği nedeniyle tercih edilir.


24) Entity Framework'te performans iyileştirmesini nasıl yapıyorsunuz?

Entity Framework performansını optimize etmek için:

  1. Kullanım AsNoTracking() salt okunur sorgular için.
  2. İstekli yük yalnızca gerekli ilgili kuruluşlarla .Include().
  3. N+1 sorgularından kaçının. projeksiyonlar kullanarak veya Select().
  4. Derlenmiş sorguları kullanın Sıkça çalıştırılan işlemler için.
  5. Çoklu ekleme/güncelleme işlemlerini toplu olarak gerçekleştirme 'da AddRange() ve SaveChanges().
  6. Otomatik Değişiklik Algılama özelliğini devre dışı bırak Toplu işlemler için: context.Configuration.AutoDetectChangesEnabled = false;
  7. Önbellekleme ve sayfalama kullanın. büyük veri kümeleri için.

İyi ayarlanmış bir EF uygulaması, geliştirici verimliliğini korurken ADO.NET'in performansına yaklaşabilir.


25) Entity Framework Core'da gölge özellik nedir?

A gölge özelliği EF modelinde mevcut ancak varlık sınıfında mevcut değil. Değişiklik sırasında EF tarafından korunuyor. tracker değeri veritabanına kaydedilir.

Örnek:

modelBuilder.Entity<Order>()
    .Property<DateTime>("LastUpdated");

Bu, EF'nin varlık sınıfını değiştirmeden ek meta verileri (örneğin, zaman damgaları, denetim bilgileri) saklamasına olanak tanır.

Gölge özelliklerine şu yollarla erişebilirsiniz:

var value = context.Entry(order).Property("LastUpdated").CurrentValue;

Gölge özellikler, kayıt tutma veya denetim senaryoları için idealdir.


26) EF Core'da değer dönüştürücüler nelerdir?

EF Core'daki değer dönüştürücüler, veritabanından okuma veya veritabanına yazma sırasında özellik değerlerinin dönüştürülmesine olanak tanır.

Örneğin, bir enum'u dize olarak saklamak için:

modelBuilder.Entity<Employee>()
    .Property(e => e.Status)
    .HasConversion(
        v => v.ToString(),
        v => (EmployeeStatus)Enum.Parse(typeof(EmployeeStatus), v));

Bu, aşağıdakiler gibi özel veri türleri için esnekliği artırır: enum, boolya da DateTimeOffset.

Değer dönüştürücüler ayrıca şu amaçlarla da kullanılır: şifreleme, sıkıştırma veya maskeleme hassas verilerden oluşur.


27) Küresel sorgu filtreleri nedir ve nasıl çalışır?

Genel sorgu filtreleri, bir varlığa ilişkin tüm sorgulara otomatik olarak koşullar uygulanmasına olanak tanır.

Bu özellikle aşağıdakiler için yararlıdır: yumuşak silmeler or Çok kiracılık.

Örnek:

modelBuilder.Entity<Employee>()
    .HasQueryFilter(e => !e.IsDeleted);

Karşı yürütülen her sorgu Employee Açıkça geçersiz kılınmadığı sürece, geçici olarak silinen kayıtları otomatik olarak hariç tutar.

Küresel filtreler, bakım kolaylığını ve veri güvenliğini artırır.


28) Birim testleri kullanarak Entity Framework kodunu nasıl test edebilirsiniz?

EF mantığını gerçek bir veritabanına erişmeden birim test etmek için şunu kullanın: bellek içi veritabanları or alaycı:

  • Seçenek 1: Bellek İçi Sağlayıcı
    var options = new DbContextOptionsBuilder<AppDbContext>()
        .UseInMemoryDatabase("TestDb")
        .Options;
    
  • Seçenek 2: Sahte DbContext oluşturma
    sahte DbSet kütüphaneler kullanarak moq İzole testler için.

Birim testleri şunları doğrulamalıdır:

  • Sorgunun doğruluğu (LINQ aracılığıyla)
  • Veri tutarlılığı sonrasında SaveChanges()
  • Depo mantığı

EF Core InMemory ile test yapmak hızı garanti eder ve SQL Server'a olan bağımlılığı ortadan kaldırır.


29) EF'deki Depo ve İş Birimi kalıplarını açıklayın.

Bu iki mimari model yardımcı olur. abstract veri erişimi ve işlem tutarlılığını korumak.

model Amaç Uygulama Örneği
depo Her bir varlık için CRUD işlemlerini kapsar. IRepository<T> ile arayüz Add(), GetAll(), vb.
İş Birimi Bir işlem içerisinde birden fazla depoyu koordine eder. SaveChanges() Bir taahhüt sınırı görevi görür.

Örnek:

public class UnitOfWork : IUnitOfWork
{
    private readonly AppDbContext _context;
    public void Commit() => _context.SaveChanges();
}

Bu modeller iyileşiyor test edilebilirlik, kodun yeniden kullanımı, ve endişelerin ayrılması Büyük ölçekli kurumsal uygulamalarda.


30) Hızlı yükleme (eager loading) ve öngörülü yükleme (projection loading) arasındaki fark nedir?

Görünüş İstekli Yükleniyor Projeksiyon Yüklemesi
Amaç İlgili verileri önceden yükler. Yalnızca belirli alanları veya özellikleri yükler.
Yöntem .Include() .Select()
Örnek E-posta context.Orders.Include(o => o.Customer) context.Orders.Select(o => new { o.Id, o.Customer.Name })
Performans Nesnelerin tamamını getirir. Minimum düzeyde veri getirir.
Kullanım çantası İşlem için ilişkili varlıklara ihtiyaç duyulduğunda Belirli hafif verilere ihtiyaç duyduğunuzda

Projeksiyon yüklemesi bir verim iyileştirmesi Bu, yalnızca gerekli sütunları seçerek bellek kullanımını azaltır.


31) Entity Framework Core'da interceptor'lar nedir?

EF Core'daki interceptor'lar, geliştiricilerin veritabanı işlemlerini yakalamasına ve değiştirmesine olanak tanır; örneğin: sorgu yürütme, komut oluşturma ve bağlantı açma.

Bunlar, EF ile veritabanı sağlayıcısı arasında ara katman bileşenleri görevi görürler.

Örnek: Çalıştırılan tüm SQL komutları kaydediliyor.

public class CommandInterceptor : DbCommandInterceptor
{
    public override void ReaderExecuting(
        DbCommand command,
        CommandEventData eventData,
        InterceptionResult<DbDataReader> result)
    {
        Console.WriteLine($"Executing SQL: {command.CommandText}");
        base.ReaderExecuting(command, eventData, result);
    }
}

Bunu şu şekilde kaydedersiniz: DbContextOptionsBuilder:

optionsBuilder.AddInterceptors(new CommandInterceptor());

Faydaları:

  • Gelişmiş günlük kaydı
  • Güvenlik (sorgu doğrulama)
  • Denetim ve performans trackral

32) EF Core, eşzamansız işlemleri nasıl ele alır?

Entity Framework Core, tam olarak destekler. eşzamansız programlama gibi yöntemler aracılığıyla SaveChangesAsync(), ToListAsync(), ve FirstOrDefaultAsync().

Asenkron yürütme yardımcı olur ölçeklenebilirliği geliştirin Web uygulamalarında, G/Ç yoğun veritabanı işlemlerini beklerken iş parçacıklarını serbest bırakarak.

Örnek:

var customers = await context.Customers
    .Where(c => c.IsActive)
    .ToListAsync();

Asenkron işlemler, özellikle yüksek verimlilik gerektiren uygulamalarda etkilidir. ASP.NET Core API'leri ve mikro hizmetler, engelleme çağrılarını azaltarak ve yanıt sürelerini iyileştirerek.


33) Entity Framework Core'da bağlantı dayanıklılığı nedir?

Bağlantı dayanıklılığı uygulamanıza yardımcı olur. Geçici veritabanı hatalarından otomatik olarak kurtarmaAğ kesintileri veya SQL zaman aşımı gibi durumlar.

Aşağıdaki şekilde yapılandırılabilir:

optionsBuilder.UseSqlServer(
    connectionString,
    options => options.EnableRetryOnFailure(5, TimeSpan.FromSeconds(10), null)
);

Burada EF, başarısız olan işlemleri gecikmelerle birlikte en fazla 5 kez yeniden deneyecektir.

Bu özellikle şu durumlarda faydalıdır: bulut tabanlı ortamlar sevmek Azure Geçici hataların sık görüldüğü SQL veritabanı.


34) EF Core'da sahip olunan varlık türleri nelerdir?

Sahip olunan varlıklar modellemeye olanak tanır. değer nesneleri tamamen başka bir varlığın yaşam döngüsüne bağlı olan.

Sahip oldukları masayı paylaşırlar ve bağımsız olarak var olamazlar.

Örnek:

public class Address
{
    public string Street { get; set; }
    public string City { get; set; }
}
public class Customer
{
    public int Id { get; set; }
    public Address Address { get; set; }
}

yapılandırma:

modelBuilder.Entity<Customer>().OwnsOne(c => c.Address);

Kullanım Örneği:

Modelleme kavramları gibi Adres, Paraya da Ölçüm Kendi kimlikleri olmayanlar.


35) Entity Framework Core'da yumuşak silme işlemini nasıl uygulayabilirsiniz?

Yumuşak silme işlemi, kayıtları fiziksel olarak silmek yerine silinmiş olarak işaretler.

Bunlar bir yöntem kullanılarak uygulanır. boolean bayrağı ve küresel sorgu filtreleri.

modelBuilder.Entity<Employee>()
    .HasQueryFilter(e => !e.IsDeleted);

Silme işleminde:

employee.IsDeleted = true;
context.Update(employee);
context.SaveChanges();

Avantajları:

  • Tarihsel verilerin korunması
  • Daha kolay iyileşme

Dezavantajları:

  • Daha büyük veritabanı tabloları
  • Dikkatli filtreleme mantığı gerektirir.

36) EF Core'da derlenmiş model nedir ve neden kullanılır?

EF Core 6+'da, derlenmiş modeller EF model meta verilerinin .NET derlemesine önceden derlenmesine olanak tanıyarak başlatma süresini ve çalışma zamanı yükünü azaltır.

Adımlar:

  1. Komutu çalıştırın: dotnet ef dbcontext optimize
  2. EF, uygulamanın çalışma zamanında daha hızlı yüklemesini sağlayan önceden derlenmiş bir model dosyası oluşturur.

Yarar: Özellikle çok sayıda varlığa sahip büyük uygulamalarda başlatma gecikmesini %30-40 oranında azaltır.

Kullanım Örneği: Yüksek performanslı mikro hizmetler ve sunucusuz ortamlar.


37) Entity Framework'te önbellekleme nasıl uygulanır?

Önbellekleme, tekrarlayan veritabanı sorgularını azaltmaya yardımcı olur. İki ana seviyesi vardır:

Menşei Açıklama Örnek E-posta
Birinci seviye önbellek Dahili, başına DbContext örnek Otomatik olarak yönetilir
İkinci seviye önbellek Bağlamlar arasında paylaşılan harici önbellek Şu kütüphaneleri kullanın: EFCoreSecondLevelCacheInterceptor

İkinci seviye önbellekleme örneği:

services.AddEFSecondLevelCache(options =>
{
    options.UseMemoryCacheProvider().DisableLogging(false);
});

Bu, performansı önemli ölçüde iyileştirir. yoğun okuma uygulamaları Gereksiz veritabanı sorgularından kaçınarak.


38) EF Core eşzamanlılık belirteçlerini ve zaman damgalarını nasıl yönetir?

Eşzamanlılık belirteçleri engeller çelişkili güncellemeler çok kullanıcılı ortamlarda.

Bir özelliği eşzamanlılık belirteci olarak işaretlemek için şunu kullanabilirsiniz: [ConcurrencyCheck] or [Timestamp] özniteliği.

Örnek:

public class Product
{
    public int Id { get; set; }

    [Timestamp]
    public byte[] RowVersion { get; set; }
}

Bir güncelleme gerçekleştiğinde, EF bu sütunu da dahil eder. WHERE fıkra.

Değer uyuşmuyorsa, bir DbUpdateConcurrencyException atılıyor — emin olmak iyimser eşzamanlılık denetimi.


39) Denetim işlemlerini (oluşturma, değiştirme, silme) nasıl uyguluyorsunuz? tracEF Core'da kral mı?

Denetleme tracks meta verileri gibi kim oluşturdu, değiştirdi veya sildi Kayıtlar.

geçersiz kılabilirsin SaveChanges():

public override int SaveChanges()
{
    var entries = ChangeTracker.Entries()
        .Where(e => e.Entity is IAuditable && 
                   (e.State == EntityState.Added || e.State == EntityState.Modified));

    foreach (var entry in entries)
    {
        var auditable = (IAuditable)entry.Entity;
        auditable.LastModified = DateTime.UtcNow;
    }

    return base.SaveChanges();
}

arayüz:

public interface IAuditable
{
    DateTime Created { get; set; }
    DateTime LastModified { get; set; }
}

Bu yöntem, denetim mantığını merkezileştirerek şunları sağlar: tutarlı veri yönetimi.


40) Kurumsal uygulamalarda Entity Framework kullanımına ilişkin en iyi uygulamalar nelerdir?

Kategoriler En iyi pratik Yarar
Performans Kullanım AsNoTracking() ve salt okunur sorgular için tahminler. Genel giderleri azaltır.
Tasarım Depo (Repository) ve İş Birimi (Unit of Work) kalıplarını uygulayın. Bakım kolaylığını artırır.
Güvenlik SQL enjeksiyonundan kaçınmak için parametreli sorgular kullanın. Veri koruması.
ölçeklenebilirlik Bağlantı havuzlama ve eşzamansız yöntemler kullanın. Yüksek yükleri kaldırabilir.
Göç Sürüm kontrolü ile otomatik geçişleri kullanın. Şema yönetimini basitleştirir.
yapılandırma Bağlantı dizelerini ve gizli bilgileri dışarıya aktarın. Daha iyi çevre izolasyonu.
Test yapmak Birim testleri için InMemory sağlayıcısını kullanın. Daha hızlı test çalışmaları.
Günlüğü Performans analizleri için EF günlük kaydını etkinleştirin. Daha kolay hata ayıklama.

Bu uygulamalar şunları sağlar: sağlam, ölçeklenebilir ve bakımı kolay Entity Framework üzerine kurulu uygulamalar.


41) Entity Framework'te daha iyi SQL çevirisi için LINQ sorgularını nasıl optimize edebilirsiniz?

Entity Framework, LINQ sorgularını otomatik olarak SQL'e dönüştürür, ancak verimsiz kalıplar yavaş veya gereksiz SQL sorguları üretebilir. LINQ'i optimize etmek, ORM'nin performanslı veritabanı sorguları üretmesini sağlar.

Optimizasyon Teknikleri:

Projeksiyonları Kullanın:

  1. Tüm varlıkları seçmek yerine yalnızca gerekli sütunları seçin.
  2. var customers = context.Customers
        .Select(c => new { c.Id, c.Name })
        .ToList();
    
  3. Müşteri Tarafı Değerlendirmesinden Kaçının:
    Filtrelemenin her zaman gerçekleştiğinden emin olun. SQL'deBellekte değil. EF Core, değerlendirme istemci tarafında olduğunda uyarı verir.
  4. Kullanım AsNoTracking() salt okunur veriler için.
  5. var orders = context.Orders.AsNoTracking().ToList();
  6. Derlenmiş Sorgulardan Yararlanın Tekrarlanan LINQ işlemleri için.
  7. Gereksiz kaçının .Include() aramalar — Yalnızca gerekli olduğunda ilgili verileri ekleyin.

Örnek:

Yetersiz:

context.Customers.ToList().Where(c => c.IsActive);

Verimli:

context.Customers.Where(c => c.IsActive).ToList();

42) EF Core'da başlangıç ​​verilerini eklemenin farklı yolları nelerdir?

Veri ekleme, veritabanının yeterli veriye sahip olmasını sağlar. varsayılan veya referans verileri oluşturulduğunda.

Yaklaşım 1: ModelBuilder Kullanımı

modelBuilder.Entity<Role>().HasData(
    new Role { Id = 1, Name = "Admin" },
    new Role { Id = 2, Name = "User" }
);

Bu işlem, verileri otomatik olarak ekler. Update-Database.

Yaklaşım 2: Özel Tohum Yöntemi

Başlangıçta kodu manuel olarak çalıştırın:

context.Database.Migrate();
if (!context.Users.Any())
{
    context.Users.Add(new User { Name = "Admin" });
    context.SaveChanges();
}

3. Yaklaşım: SQL Komut Dosyaları

Geçişlerde ham SQL kullanın:

migrationBuilder.Sql("INSERT INTO Roles (Name) VALUES ('Admin')");

Öneri:
Kullanım HasData() Statik referans verileri ve dinamik başlangıç ​​verileri için programatik tohumlama.


43) EF Core, veritabanı sağlayıcılarını dahili olarak nasıl yönetir?

EF Core şudur: sağlayıcıdan bağımsızBu, ayrı ayrı yollarla birden fazla veritabanı motorunu hedefleyebileceği anlamına gelir. veritabanı sağlayıcı paketleri.

Yaygın Sağlayıcılar:

Provider NuGet paket veritabanı
SQL Server Microsoft.EntityFrameworkCore.SqlServer MSSQL
SQLite Microsoft.EntityFrameworkCore.Sqlite Mobil/Masaüstü
PostgreSQL Npgsql.EntityFrameworkCore.PostgreSQL PostgreSQL
MySQL Pomelo.EntityFrameworkCore.MySql MySQL
Cosmos DB'si Microsoft.EntityFrameworkCore.Cosmos NoSQL

EF Core dahili olarak şunları kullanır: abstrackatmanlar için:

  • Sorgu çevirisi
  • SQL komut üretimi
  • Veri türü haritasıping

Her sağlayıcı, EF Core'un temel abs sınıfından miras alan kendi sınıflarını uygular.tractions (örneğin, RelationalDatabaseProvider, QuerySqlGenerator).


44) “Bölünmüş sorgu” nedir ve ne zaman kullanılmalıdır?

Bölünmüş sorgular, EF'nin performans göstermesini engeller. büyük, karmaşık bağlantılar Tek bir SQL sorgusu yerine birden fazla SQL sorgusu çalıştırarak.

Örnek:

var customers = context.Customers
    .Include(c => c.Orders)
    .AsSplitQuery()
    .ToList();

Bu komut şu işlemleri gerçekleştirir:

  1. Sorgu 1 → Müşterileri Al
  2. Sorgu 2 → Bu müşterilerle ilgili siparişleri al

Faydaları:

  • Büyük Kartezyen çarpımlarını önler.
  • Büyük ve ilişkili veri kümeleriyle performansı artırır.

Dezavantaj:

Veritabanına birden fazla gidiş-dönüş işlemi.

Kullanım bölünmüş sorgular Büyük miktarda ilgili verinin hızlı yüklenmesi bellek sorunlarına yol açabilir.


45) EF tarafından oluşturulan SQL komutlarını etkili bir şekilde nasıl izleyebilirsiniz?

SQL'i izlemek, yavaş çalışan sorguların hata ayıklamasına ve ORM davranışının optimize edilmesine yardımcı olur.

SQL Günlükleme Yöntemleri:

  1. Konsol Günlüğü
  2. optionsBuilder
        .UseSqlServer(conn)
        .LogTo(Console.WriteLine, LogLevel.Information);
    
  3. ILoggerFactory Entegrasyonu
  4. var loggerFactory = LoggerFactory.Create(builder => builder.AddConsole());
    optionsBuilder.UseLoggerFactory(loggerFactory);
    
  5. Müdahale Uygulamak DbCommandInterceptor Komutları ve zamanlamaları yakalamak için.
  6. Profil Oluşturma Araçları Şunlar gibi araçları kullanın:
    • Mini Profil Oluşturucu
    • SQL Server Profil Oluşturucu
    • EFCorePowerTools

Günlük kaydı tutulmalıdır. seçici olarak etkinleştirildi Üretimde performans düşüşünü önlemek için.


46) Değişim ile değişiklik arasındaki fark nedir?Tracker.DetectChanges() ve AutoDetectChangesEnabled?

Özellik DetectChanges() AutoDetectChangesEnabled
Menşei Yöntem Varlığınızı
Amaç EF'yi taramaya zorlar tracked varlıkları ve değişiklikleri tespit et Otomatik değişiklik algılamayı etkinleştirir/devre dışı bırakır.
Varsayılan Manuel Gerçek
kullanım Performans optimizasyonu için açıkça çağrıda bulunun. Toplu güncellemeler için devre dışı bırak

Örnek:

context.ChangeTracker.AutoDetectChangesEnabled = false;
foreach (var item in list)
{
    context.Add(item);
}
context.SaveChanges();

Döngülerde otomatik algılamayı devre dışı bırakmak, performansı % oranında artırır. 40% Toplu işlemlerde.


47) EF Core ile zamansal tabloları nasıl kullanırsınız?

Zamansal tablolar (SQL Server 2016'da tanıtıldı) size şunları sağlar: track tarihsel veri otomatik olarak.

Adımlar:

  1. Geçiş işleminde zamansal desteği etkinleştirin:
  2. builder.Entity<Employee>()
        .ToTable("Employees", b => b.IsTemporal());
    
  3. Geçmiş verilere ilişkin sorgulama:
  4. var history = context.Employees
        .TemporalAsOf(DateTime.UtcNow.AddDays(-7))
        .ToList();
    

Avantajları:

  • Dahili veri geçmişi trackral
  • Denetim ve uyumluluk
  • Manuel tetiklemeye gerek yok.

EF Core 6+ tam zamansal sorgulamayı destekler.


48) EF Core, derlenmiş sorguları ve önceden oluşturulmuş modelleri birlikte nasıl destekler?

Derlenmiş sorgular ve derlenmiş modeller iki farklı kavramdır. performans özellikleri Birbirini tamamlayan.

Özellik Amaç
Derlenmiş Sorgular Sorgu çeviri sonuçlarını önbelleğe alın
Derlenmiş Modeller Model meta verilerini derlemeden önce

Derlenmiş Sorgu Örneği:

static readonly Func<AppDbContext, int, Customer> _getCustomerById =
    EF.CompileQuery((AppDbContext ctx, int id) =>
        ctx.Customers.FirstOrDefault(c => c.Id == id));

Kullanımı:

var customer = _getCustomerById(context, 5);

birlikte: Derlenmiş modeller azaltır başlangıç ​​maliyetiDerlenmiş sorgular ise azaltır. çalışma zamanı sorgu yükü — için idealdir yüksek frekanslı sorgular.


49) Mikroservis mimarisinde EF kullanırken sık karşılaşılan tuzaklar nelerdir?

Yaygın hatalar:

  1. Hizmetler Arasında Paylaşılan DbContext
    → Mikroservis izolasyonunu ihlal eder.
    → Her mikroservisin kendine ait bir DbContext'i ve şeması olmalıdır.
  2. Sohbet Tarzında İletişim (N+1 Sorgu)
    → API çağrısı başına EF sorgularını en aza indirin.
  3. Aşırı İstekli Yükleme
    → DTO'lar aracılığıyla yalnızca gerekli olanları yükleyin.
  4. Merkezi Göçler
    → Her hizmet kendi geçiş işlemlerini bağımsız olarak yönetmelidir.
  5. İşlemsel Sınırların Yokluğu
    → Servisler arası tutarlılık gerekiyorsa dağıtılmış işlemler (Outbox modeli) kullanın.
  6. SQL Sağlayıcısına Sıkı Bağlantı
    → Depo abs'yi kullanıntracVeritabanı seçiminde esnekliği korumak için.

50) ASP.NET Core'da bağımlılık enjeksiyonu DbContext ile nasıl entegre olur?

Entity Framework, sorunsuz bir şekilde entegre olur. ASP.NET Core'un yerleşik Bağımlılık Enjeksiyonu (DI) özelliği sistem.

Kurmak:

services.AddDbContext<AppDbContext>(options =>
    options.UseSqlServer(Configuration.GetConnectionString("Default")));

Ardından bunu denetleyicilere veya hizmetlere enjekte edin:

public class CustomerService
{
    private readonly AppDbContext _context;
    public CustomerService(AppDbContext context)
    {
        _context = context;
    }
}

Yaşam süreleri:

Ömür Açıklama Için tavsiye edilen
Dürbünlü HTTP isteği başına bir bağlam Varsayılan
Geçici Her seferinde yeni bir örnek oluşturuluyor. Arka plan işleri
Tek çocuk Küresel olarak paylaşıldı (İş parçacığı güvenli değil)

DI kullanımı şunları sağlar: test edilebilirlik, yaşam döngüsü yönetimi, ve kaynak verimliliği Web ve arka plan süreçleri genelinde.


🔍 Entity Framework Mülakatlarında En Sık Sorulan Sorular, Gerçek Dünya Senaryoları ve Stratejik Yanıtlar

1) Entity Framework nedir ve kurumsal uygulamalarda neden kullanılır?

Adaydan beklenenler: Mülakatçı, Entity Framework'e dair temel anlayışınızı ve gerçek dünya uygulamalarındaki değerini değerlendirmek istiyor.

Örnek cevap: Entity Framework bir Nesne-İlişki Haritasıdır.ping .NET için, geliştiricilerin ham SQL yerine .NET nesnelerini kullanarak veritabanlarıyla çalışmasına olanak tanıyan bir çerçevedir. Kurumsal uygulamalarda verimliliği artırmak, tekrarlayan veri erişim kodunu azaltmak ve sorumlulukların güçlü bir şekilde ayrılmasını sağlamak için kullanılır.


2) Aradaki farkı açıklayabilir misiniz? Code Öncelikli, Veritabanı Öncelikli ve Model Öncelikli yaklaşımlar mı?

Adaydan beklenenler: Mülakatçı, farklı geliştirme iş akışları ve bunların her birinin ne zaman kullanılacağına dair bilginizi değerlendirmek istiyor.

Örnek cevap: Code İlk yaklaşım, alan sınıflarıyla başlar ve koddan veritabanını oluşturur. Veritabanı Odaklı yaklaşım, mevcut bir veritabanıyla başlar ve varlık sınıflarını oluşturur. Model Odaklı yaklaşım ise, modeli tanımlamak için görsel bir tasarımcı kullanır ve ardından hem kodu hem de veritabanını oluşturur. Her yaklaşım, proje gereksinimlerine ve mevcut altyapıya göre seçilir.


3) Entity Framework tablolar arasındaki ilişkileri nasıl ele alıyor?

Adaydan beklenenler: Mülakatçı, veri modelleme ve ilişkisel haritalama konusundaki anlayışınızı test ediyor.ping.

Örnek cevap: Entity Framework, ilişkileri gezinme özellikleri ve yabancı anahtarlar kullanarak yönetir. Bire bir, bire çok ve çoktan çoğa ilişkileri destekleyerek geliştiricilerin birleştirmeler yerine nesne referanslarını kullanarak ilgili verilerde gezinmelerine olanak tanır.


4) Entity Framework kullanarak veritabanı performansını iyileştirdiğiniz bir durumu açıklayın.

Adaydan beklenenler: Mülakatçı, optimizasyon becerilerini gösteren pratik bir örnek duymak istiyor.

Örnek cevap: Önceki görevimde, gereksiz eager loading'i azaltarak ve SELECT ifadeleriyle projeksiyon sorguları uygulayarak performansı iyileştirdim. Bu, veritabanından alınan veri miktarını en aza indirdi ve sorgu yürütme süresini önemli ölçüde azalttı.


5) Entity Framework'te geçişleri nasıl yönetirsiniz?

Adaydan beklenenler: Mülakatçı, şema değişiklikleri ve sürüm kontrolü konusundaki deneyiminizi değerlendiriyor.

Örnek cevap: Geçiş işlemleri, yerleşik geçiş araçları kullanılarak yönetilir. track modeli zaman içinde değişir. Önceki görevimde, ortamlar arası veritabanı bütünlüğünü sağlamak için düzenli olarak geçiş komut dosyaları oluşturup uyguladıktan sonra gözden geçiriyordum.


6) Tembel yükleme nedir ve ne zaman kullanmaktan kaçınmalısınız?

Adaydan beklenenler: Mülakatçı, veri yükleme stratejileri ve performans ödünleşmeleri konusundaki anlayışınızı test etmek istiyor.

Örnek cevap: Tembel yükleme, ilgili verilere erişildiğinde otomatik olarak yükler. Performans açısından kritik senaryolarda veya API'lerde kullanmaktan kaçınmanızı öneririm çünkü istenmeyen birden fazla veritabanı çağrısına neden olarak N+1 sorgu sorununa yol açabilir.


7) Entity Framework'te işlemleri nasıl yönetiyorsunuz?

Adaydan beklenenler: Mülakatçı, veri tutarlılığı ve hata yönetimi konusundaki bilginizi değerlendiriyor.

Örnek cevap: Entity Framework, DbContext ve TransactionScope aracılığıyla işlemleri destekler. Önceki işimde, birden fazla ilgili veritabanı işleminin ya birlikte başarıyla tamamlanmasını ya da başarısızlık durumunda geri alınmasını sağlamak için açık işlemler kullanıyordum.


8) Entity Framework'te bağımlılık enjeksiyonunun nasıl kullanıldığını açıklayın.

Adaydan beklenenler: Mülakatçı, modern uygulama mimarisini ne kadar iyi anladığınızı görmek istiyor.

Örnek cevap: Bağımlılık enjeksiyonu, DbContext'i servislere veya denetleyicilere enjekte etmek için kullanılır. Bu, iş mantığını değiştirmeden bağlamın taklit edilmesine veya değiştirilmesine olanak tanıyarak test edilebilirliği ve sürdürülebilirliği artırır.


9) Entity Framework ile karşılaştığınız zorlu bir hatayı ve nasıl çözdüğünüzü açıklayın.

Adaydan beklenenler: Mülakatçı, problem çözme yeteneği ve hata ayıklama becerileri arıyor.

Örnek cevap: Son görevimde bir sorunla karşılaştım. tracAyrılmış varlıkları güncellerken kral çakışmaları yaşanıyordu. Bunu, varlık durumlarını açıkça belirterek ve her varlığın yalnızca bir örneğinin olmasını sağlayarak çözdüm. tracBağlam tarafından belirlenir.


10) Entity Framework'ün doğru araç olmadığına nasıl karar veriyorsunuz?

Adaydan beklenenler: Mülakatçı, muhakeme yeteneğinizi ve uygun teknolojileri seçme becerinizi anlamak istiyor.

Örnek cevap: Uygulamalar son derece yüksek performanslı veri erişimi veya karmaşık saklı prosedür mantığı gerektirdiğinde alternatifleri değerlendiriyorum. Bu gibi durumlarda, mikro-ORM veya ham ADO.NET kullanmak daha fazla kontrol ve verimlilik sağlayabilir.

Bu yazıyı şu şekilde özetleyin: