|
|
2021-2-7 14:15:08 tarihinde yayınlandı
|
|
|
|

Gölge özellikler, .NET varlık sınıfında tanımlanmamış ancak EF Core modelinde o varlık tipi için tanımlanmış özelliklerdir. Bu özelliklerin değerleri ve durumları tamamen değişiklik takipçisinde korunur. Gölgeli özellikler, veritabanındaki verilerin eşlenmiş varlık türüne açığa çıkmaması gerektiğinde faydalıdır. Entity Framework çekirdeği, EF 6.x'te olmayan "gölge" özniteliği adı verilen yeni bir öznitelik türü sunar.
Gölge özelliği yok. .NET varlık sınıfları. Bunun yerine, varlık veri modelinde belirli bir varlık türü için yapılandırabilirsiniz. Bağlam sınıfının OnModelCreating() yöntemiyle yapılandırılabilir.
Aşağıdaki diyagram gölge özniteliğini göstermektedir.
Yukarıdaki görselde gösterildiği gibi, gölge özniteliği varlık sınıfınıza ait değildir. Bu nedenle, bir varlığın diğer özelliklerine erişirken ona erişemezsiniz. Gölgeli özellikler, yalnızca varlık veri modeli oluşturulurken varlık türleri için yapılandırılabilir ve ayrıca veritabanı sütunlarına eşlenirler. Gölge özelliğinin değeri ve durumu yalnızca değişim takipçisinde korunur.
Gölge özelliklerinin pratik yönlerini anlayalım. Diyelim ki veritabanı tablosunda her kaydın oluşturulma ve güncelleme tarihlerini korumamız gerekiyor. EF Core'da varlıklar için oluşturulma ve modifikasyon tarihlerini nasıl ayarlayacağınızı varlık sınıfında CreatedDate ve UpdatedDate özelliklerini tanımlayarak öğrendiniz. Burada, varlık sınıfına gölge özellikleri dahil etmek yerine gölge özellikleri kullanarak aynı sonucu nasıl elde edebileceğimizi göreceğiz.
Aşağıdaki Öğrenci Kuruluşu sınıflarını düşünün.
Yukarıdaki Öğrenci sınıfıCreatedDate ve UpdatedDate özellikleri dahil değildiroluşturulduğu veya güncellendiği zamanı korumak için. Bunları Öğrenci varlığı üzerinde gölge özellikler olarak yapılandırıyoruz.
Gölge özelliklerini tanımlayın
OnModelCreating() yöntemini kullanarak varlık türleri için gölge özelliklerini Fluent API kullanarak tanımlayabilirsiniz.
Aşağıdaki yapılandırma, Öğrenci varlığı için CreatedDate ve UpdatedDate olmak üzere iki gölgeli özelliği yapılandırır.
Gördüğünüz gibi, gölge özelliklerini yapılandırmak için Property() yöntemi kullanılır. Gölge özelliğinin adını bir dizi olarak, tipi ise genel bir parametre olarak belirtin. Property() metodunda belirtilen isim mevcut bir özelliğin adıyla eşleşirse, EF Core o mevcut özelliği yeni bir gölge özelliği eklemek yerine gölge bir özellik olarak yapılandırır.
Veritabanındaki gölge özellikler
Gölge özellikleri tanımlandıktan sonra, gölge özellikleri ilgili veritabanı sütunlarına eşlendiği için veritabanı şemasını güncellememiz gerekiyor.
Bunu yapmak için, Visual Studio'nun Paket Yöneticisi konsolunda aşağıdaki komutu kullanarak veritabanı geçişi ekleyin.
Öğrenci tablosu aşağıda gösterildiği gibi SQL Server'da CreatedDate ve UpdatedDate olmak üzere iki sütun içerecek.
Yani bu özellikleri Öğrenci sınıfına dahil etmeyip gölge özellikleri olarak yapılandırmasak bile, veritabanında ilgili sütunlar olacak.
Gölge mülke erişim
Property() yöntemini kullanarak EntityEntry'de gölge özelliğin değerini alabilir veya ayarlayabilirsiniz. Aşağıdaki kod, gölge özelliğinin değerine erişir.
Ancak bizim senaryomuzda, SaveChanges() yönteminde bu gölge özelliklere otomatik olarak değerleri ayarlamak istiyoruz, böylece her varlık nesnesine manuel olarak ayarlamak zorunda kalmayız. Yani, aşağıda gösterildiği gibi bağlam sınıfında SaveChanges() yöntemini geçersiz kılın.
Bu, CreatedDate ve UpdatedDate gölge özellikleri için otomatik olarak değerler ayarlar.
Şimdi, aşağıdaki kodu çalıştırın ve veritabanındaki kayıtları kontrol edin.
Yukarıdaki kod, aşağıdaki kayıtları CreatedDate ve UpdatedDate for Students bölümlerine ekler.
Yani gölge özellikleri yapılandırarak, onları varlık sınıfına dahil etmek zorunda kalmıyoruz.
Tüm varlıklarda gölge özelliklerini yapılandırın
Tüm varlıklarda gölge özelliklerini manuel olarak yapılandırmak yerine, bunları manuel olarak ayarlayabilirsiniz.
Örneğin, aşağıdaki görselde gösterildiği gibi CreatedDate ve UpdatedDate'in tüm varlıklarını son kez yapılandırabiliriz.
Shadow özelliğini ne zaman kullanmalı?
Gölge özözniteliği iki durumda kullanılabilir:
Yukarıda tartışılan senaryo gibi, haritalanmış varlıklarda veritabanı sütunlarını açmak istemediğinizde. Yabancı anahtar özelliklerini açmak istemediğinizde ama sadece ilişkileri yönetmek için navigasyon özelliklerini kullanmak istediğinizde. Yabancı anahtar özelliği gölge bir özellik olur ve veritabanı sütununa eşlenir, ancak varlığın bir özelliği olarak açığa çıkmaz. (EF Core'da, bir varlık sınıfında yabancı anahtar özelliği tanımlamıyorsanız, bunun için otomatik olarak bir gölge özelliği oluşturur.) Yabancı anahtar özelliklerini manuel olarak yapılandırmanıza gerek yok. )
Kaynaklar:
Bağlantı girişi görünür.
Bağlantı girişi görünür.
|
Önceki:MySQL, sorgu sonuçlarını bir dosyaya dışa aktarırÖnümüzdeki:ASP.NET Core ViewComponent Kullanımı Eğitimi
|