Entity Framework - Genel Bakış¶
Giriş¶
Entity Framework (EF), .NET uygulamalarında veritabanı işlemlerini gerçekleştirmek için kullanılan bir ORM (Object-Relational Mapping) framework'üdür. Mid-level geliştiriciler için EF'in ileri seviye özellikleri ve kullanım senaryoları önemlidir.
Mid-Level Entity Framework Konuları¶
- Performance Optimization
- Query optimizasyonu
- Change tracking optimizasyonu
- Bulk operasyonlar
- Caching stratejileri
-
Index yönetimi
-
Advanced Querying
- LINQ to Entities
- Raw SQL queries
- Stored procedures
- Database functions
-
Complex queries
-
Change Tracking
- Entity states
- Change tracking strategies
- Bulk updates
- Concurrency control
-
Audit logging
-
Bulk Operations
- Bulk insert
- Bulk update
- Bulk delete
- Batch processing
-
Performance optimization
-
Concurrency
- Optimistic concurrency
- Pessimistic concurrency
- Concurrency tokens
- Conflict resolution
-
Retry strategies
-
Raw SQL
- SQL injection önleme
- Parametre kullanımı
- Stored procedure çağrıları
- View kullanımı
-
Custom SQL
-
Interceptors
- Command interception
- Connection interception
- Transaction interception
- Custom interception
-
Logging ve auditing
-
Value Objects
- Value object tanımlama
- Owned entity types
- Value conversion
- Query optimization
-
Immutability
-
Complex Types
- Complex type tanımlama
- Value conversion
- Query optimization
- Mapping stratejileri
-
Validation
-
Shadow Properties
- Shadow property tanımlama
- Audit fields
- Soft delete
- Tenant isolation
- Security
-
Global Query Filters
- Filter tanımlama
- Multi-tenant uygulamalar
- Soft delete
- Security filters
- Performance optimization
-
Database Functions
- Built-in functions
- Custom functions
- Scalar functions
- Table-valued functions
- Performance considerations
-
Custom Migrations
- Migration oluşturma
- Custom SQL
- Data seeding
- Version control
- Rollback stratejileri
-
Multiple Databases
- Connection string yönetimi
- Context factory pattern
- Database provider seçimi
- Migration yönetimi
- Transaction yönetimi
-
Distributed Transactions
- TransactionScope kullanımı
- MSDTC yapılandırması
- Two-phase commit
- Error handling
- Retry mekanizmaları
Entity Framework Best Practices¶
- Performans
- Query optimizasyonu
- Change tracking stratejileri
- Bulk operasyonlar
- Caching
-
Index yönetimi
-
Güvenlik
- SQL injection önleme
- Parametre kullanımı
- Input validation
- Access control
-
Audit logging
-
Bakım
- Code-first yaklaşımı
- Migration yönetimi
- Version control
- Documentation
-
Testing
-
Monitoring
- Query logging
- Performance metrics
- Error tracking
- Audit logging
- Health checks
Mülakat Soruları¶
Temel Sorular¶
- Entity Framework nedir ve neden kullanılır?
-
Cevap: Entity Framework, .NET uygulamalarında veritabanı işlemlerini gerçekleştirmek için kullanılan bir ORM framework'üdür. Veritabanı işlemlerini nesne yönelimli bir şekilde yapmayı sağlar, kod tekrarını azaltır ve veritabanı bağımsızlığı sağlar.
-
Entity Framework'un temel özellikleri nelerdir?
-
Cevap:
- Object-Relational Mapping
- LINQ desteği
- Change tracking
- Migrations
- Concurrency control
- Transaction yönetimi
-
Entity Framework'te Code-First ve Database-First yaklaşımları arasındaki farklar nelerdir?
-
Cevap: Code-First yaklaşımında önce entity sınıfları oluşturulur ve veritabanı bu sınıflardan türetilir. Database-First yaklaşımında ise önce veritabanı oluşturulur ve entity sınıfları veritabanından türetilir.
-
Entity Framework'te lazy loading ve eager loading nedir?
-
Cevap: Lazy loading, ilişkili verilerin ihtiyaç duyulduğunda yüklenmesidir. Eager loading ise ilişkili verilerin ana sorgu ile birlikte yüklenmesidir.
-
Entity Framework'te change tracking nedir?
- Cevap: Change tracking, entity'lerdeki değişikliklerin takip edilmesi ve veritabanına yansıtılması sürecidir.
Teknik Sorular¶
- Entity Framework'te performans optimizasyonu nasıl yapılır?
-
Cevap:
// Örnek: Eager loading var blog = await _context.Blogs .Include(b => b.Posts) .FirstOrDefaultAsync(b => b.Id == id); // Örnek: Projection var blogTitles = await _context.Blogs .Select(b => new { b.Id, b.Title }) .ToListAsync(); // Örnek: Raw SQL var blogs = await _context.Blogs .FromSqlRaw("SELECT * FROM Blogs WHERE Rating > {0}", 3) .ToListAsync();
-
Entity Framework'te transaction yönetimi nasıl yapılır?
-
Cevap:
using (var transaction = await _context.Database.BeginTransactionAsync()) { try { // İşlemler await _context.SaveChangesAsync(); await transaction.CommitAsync(); } catch { await transaction.RollbackAsync(); throw; } }
-
Entity Framework'te concurrency kontrolü nasıl yapılır?
-
Cevap:
public class Blog { public int Id { get; set; } public string Title { get; set; } [Timestamp] public byte[] RowVersion { get; set; } } // Güncelleme try { _context.Entry(blog).OriginalValues["RowVersion"] = originalRowVersion; await _context.SaveChangesAsync(); } catch (DbUpdateConcurrencyException) { // Concurrency çakışması }
-
Entity Framework'te bulk operasyonlar nasıl yapılır?
-
Cevap:
// Bulk insert await _context.BulkInsertAsync(entities); // Bulk update await _context.BulkUpdateAsync(entities); // Bulk delete await _context.BulkDeleteAsync(entities);
-
Entity Framework'te custom migration nasıl oluşturulur?
- Cevap:
public partial class CustomMigration : Migration { protected override void Up(MigrationBuilder migrationBuilder) { migrationBuilder.Sql("CREATE PROCEDURE ..."); } protected override void Down(MigrationBuilder migrationBuilder) { migrationBuilder.Sql("DROP PROCEDURE ..."); } }
İleri Seviye Sorular¶
- Entity Framework'te distributed transaction nasıl yönetilir?
-
Cevap:
- TransactionScope kullanımı
- MSDTC yapılandırması
- Two-phase commit
- Error handling
- Retry mekanizmaları
-
Entity Framework'te multiple database nasıl yönetilir?
-
Cevap:
- Connection string yönetimi
- Context factory pattern
- Database provider seçimi
- Migration yönetimi
- Transaction yönetimi
-
Entity Framework'te interceptors nasıl kullanılır?
-
Cevap:
- Command interception
- Connection interception
- Transaction interception
- Custom interception
- Logging ve auditing
-
Entity Framework'te value objects ve complex types nasıl kullanılır?
-
Cevap:
- Value object tanımlama
- Complex type tanımlama
- Owned entity types
- Value conversion
- Query optimization
-
Entity Framework'te global query filters nasıl kullanılır?
- Cevap:
- Filter tanımlama
- Multi-tenant uygulamalar
- Soft delete
- Security filters
- Performance optimization