Skip to content

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ı

  1. Performance Optimization
  2. Query optimizasyonu
  3. Change tracking optimizasyonu
  4. Bulk operasyonlar
  5. Caching stratejileri
  6. Index yönetimi

  7. Advanced Querying

  8. LINQ to Entities
  9. Raw SQL queries
  10. Stored procedures
  11. Database functions
  12. Complex queries

  13. Change Tracking

  14. Entity states
  15. Change tracking strategies
  16. Bulk updates
  17. Concurrency control
  18. Audit logging

  19. Bulk Operations

  20. Bulk insert
  21. Bulk update
  22. Bulk delete
  23. Batch processing
  24. Performance optimization

  25. Concurrency

  26. Optimistic concurrency
  27. Pessimistic concurrency
  28. Concurrency tokens
  29. Conflict resolution
  30. Retry strategies

  31. Raw SQL

  32. SQL injection önleme
  33. Parametre kullanımı
  34. Stored procedure çağrıları
  35. View kullanımı
  36. Custom SQL

  37. Interceptors

  38. Command interception
  39. Connection interception
  40. Transaction interception
  41. Custom interception
  42. Logging ve auditing

  43. Value Objects

  44. Value object tanımlama
  45. Owned entity types
  46. Value conversion
  47. Query optimization
  48. Immutability

  49. Complex Types

  50. Complex type tanımlama
  51. Value conversion
  52. Query optimization
  53. Mapping stratejileri
  54. Validation

  55. Shadow Properties

    • Shadow property tanımlama
    • Audit fields
    • Soft delete
    • Tenant isolation
    • Security
  56. Global Query Filters

    • Filter tanımlama
    • Multi-tenant uygulamalar
    • Soft delete
    • Security filters
    • Performance optimization
  57. Database Functions

    • Built-in functions
    • Custom functions
    • Scalar functions
    • Table-valued functions
    • Performance considerations
  58. Custom Migrations

    • Migration oluşturma
    • Custom SQL
    • Data seeding
    • Version control
    • Rollback stratejileri
  59. Multiple Databases

    • Connection string yönetimi
    • Context factory pattern
    • Database provider seçimi
    • Migration yönetimi
    • Transaction yönetimi
  60. Distributed Transactions

    • TransactionScope kullanımı
    • MSDTC yapılandırması
    • Two-phase commit
    • Error handling
    • Retry mekanizmaları

Entity Framework Best Practices

  1. Performans
  2. Query optimizasyonu
  3. Change tracking stratejileri
  4. Bulk operasyonlar
  5. Caching
  6. Index yönetimi

  7. Güvenlik

  8. SQL injection önleme
  9. Parametre kullanımı
  10. Input validation
  11. Access control
  12. Audit logging

  13. Bakım

  14. Code-first yaklaşımı
  15. Migration yönetimi
  16. Version control
  17. Documentation
  18. Testing

  19. Monitoring

  20. Query logging
  21. Performance metrics
  22. Error tracking
  23. Audit logging
  24. Health checks

Mülakat Soruları

Temel Sorular

  1. Entity Framework nedir ve neden kullanılır?
  2. 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.

  3. Entity Framework'un temel özellikleri nelerdir?

  4. Cevap:

    • Object-Relational Mapping
    • LINQ desteği
    • Change tracking
    • Migrations
    • Concurrency control
    • Transaction yönetimi
  5. Entity Framework'te Code-First ve Database-First yaklaşımları arasındaki farklar nelerdir?

  6. 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.

  7. Entity Framework'te lazy loading ve eager loading nedir?

  8. Cevap: Lazy loading, ilişkili verilerin ihtiyaç duyulduğunda yüklenmesidir. Eager loading ise ilişkili verilerin ana sorgu ile birlikte yüklenmesidir.

  9. Entity Framework'te change tracking nedir?

  10. Cevap: Change tracking, entity'lerdeki değişikliklerin takip edilmesi ve veritabanına yansıtılması sürecidir.

Teknik Sorular

  1. Entity Framework'te performans optimizasyonu nasıl yapılır?
  2. 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();
    

  3. Entity Framework'te transaction yönetimi nasıl yapılır?

  4. Cevap:

    using (var transaction = await _context.Database.BeginTransactionAsync())
    {
        try
        {
            // İşlemler
            await _context.SaveChangesAsync();
            await transaction.CommitAsync();
        }
        catch
        {
            await transaction.RollbackAsync();
            throw;
        }
    }
    

  5. Entity Framework'te concurrency kontrolü nasıl yapılır?

  6. 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ı
    }
    

  7. Entity Framework'te bulk operasyonlar nasıl yapılır?

  8. Cevap:

    // Bulk insert
    await _context.BulkInsertAsync(entities);
    
    // Bulk update
    await _context.BulkUpdateAsync(entities);
    
    // Bulk delete
    await _context.BulkDeleteAsync(entities);
    

  9. Entity Framework'te custom migration nasıl oluşturulur?

  10. 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

  1. Entity Framework'te distributed transaction nasıl yönetilir?
  2. Cevap:

    • TransactionScope kullanımı
    • MSDTC yapılandırması
    • Two-phase commit
    • Error handling
    • Retry mekanizmaları
  3. Entity Framework'te multiple database nasıl yönetilir?

  4. Cevap:

    • Connection string yönetimi
    • Context factory pattern
    • Database provider seçimi
    • Migration yönetimi
    • Transaction yönetimi
  5. Entity Framework'te interceptors nasıl kullanılır?

  6. Cevap:

    • Command interception
    • Connection interception
    • Transaction interception
    • Custom interception
    • Logging ve auditing
  7. Entity Framework'te value objects ve complex types nasıl kullanılır?

  8. Cevap:

    • Value object tanımlama
    • Complex type tanımlama
    • Owned entity types
    • Value conversion
    • Query optimization
  9. Entity Framework'te global query filters nasıl kullanılır?

  10. Cevap:
    • Filter tanımlama
    • Multi-tenant uygulamalar
    • Soft delete
    • Security filters
    • Performance optimization