Blog
Mert Özen'in yazılım geliştirme, backend, frontend ve DevOps üzerine blog yazıları.
EF Core'da Connection Resiliency, Logging ve Diagnostics: Execution Strategy, Command Timeout, TagWith, Event'ler ve Metric'ler
EF Core'da EnableRetryOnFailure, SQL Server'ın geçici hatalarını katlanan beklemeyle tekrar dener; kendi transaction'ın CreateExecutionStrategy ya da ExecuteInTransactionAsync içinde, idempotent bir RequestId ile yazılmalıdır. Command timeout tekrar denenmez; log kategorileri, TagWith/TagWithCallSite, DiagnosticListener, OpenTelemetry ve Microsoft.EntityFrameworkCore meter'ı hangi kodun hangi SQL'i attığını gösterir.
EF Core Migration'ları Pratikte: Rename mi Drop mu, Data Migration, View/SP'yi Migration'da Yönetmek, Ekipte Çakışmalar ve Squash
Üretilen migration her zaman okunmalı: EF Core FullName'i FirstName/LastName'e bölerken veriyi yanlış kolona taşıyan bir RenameColumn üretebilir. Veri taşıyan adımlar migrationBuilder.Sql ve EXEC ile, view ve function'lar migration'da ya da custom MigrationOperation ile yazılır; ekipte ayrışan migration'lar yeniden üretilir, uzun geçmiş elle Baseline'a squash edilir.
EF Core Fluent API Kataloğu: Kolon Tipleri, Default ve Computed Değerler, Sequence ve HiLo, Index Seçenekleri ve Toplu Convention'lar
EF Core'da kolon tipleri HasMaxLength, IsUnicode, IsFixedLength, HasPrecision ve UseCollation ile, üretilen değerler HasDefaultValueSql, HasComputedColumnSql, HasSequence ve UseHiLo ile, index'ler IsUnique, HasFilter, IncludeProperties ve IsDescending ile ayarlanır; ConfigureConventions bütün string ve decimal'lara tek satırda varsayılan verir. HasDefaultValue, CLR default'unu (0, false) veritabanına göndermez.
EF Core'da LINQ'ten SQL'e Çeviri Kataloğu: String, DateTime, Math, Collection, EF.Functions ve HasDbFunction
EF Core, SQL Server'da string method'larını LIKE, UPPER, SUBSTRING ve STRING_AGG'e, tarihleri DATEADD/DATEPART/DATEDIFF'e, collection'ları IN ve OPENJSON'a çevirir; karşılığı olmayan SQL özellikleri EF.Functions, kendi function'ların HasDbFunction ile LINQ'e bağlanır. Kolonu function'a sokan çeviriler (ToLower, DATEDIFF) index'i kullanılamaz hâle getirir.
EF Core ile Database-First: Mevcut Veritabanından Model Üretmek, Scaffold Seçenekleri, T4 Template'leri ve Tekrar Scaffold
Mevcut bir veritabanından EF Core modeli dotnet ef dbcontext scaffold ile üretilir; connection string Name= ile configuration'dan okunur, --schema/--table, --use-database-names, --no-pluralize ve --no-onconfiguring çıktıyı belirler. Tekrar scaffold edilecek kodda değişiklikler partial class, OnModelCreatingPartial ve T4 template'lerinde tutulur.
EF Core 10 Yenilikleri: Named Query Filter, LeftJoin ve JSON'da Complex Type
EF Core 10 LTS ile isimli query filter'lar ve IgnoreQueryFilters(["..."]), LeftJoin/RightJoin, normal lambda alan ExecuteUpdateAsync, JSON'a map edilen complex type ve ComplexCollection, padding'li parametreli collection'lar, SqlVector ile vektör araması ve SQLite DateTimeOffset breaking change'i.