Bu makale makine çevirisi ayna makalesidir, orijinal makaleye geçmek için lütfen buraya tıklayın.

Görünüm: 36284|Yanıt: 0

[Kaynak] EF Core Series (3) Varlık Çerçevesi Gölge Özellikleri [Yeniden Baskı]

[Bağlantıyı kopyala]
2021-2-7 14:15:08 tarihinde yayınlandı | | | |
EF Core Serisi 2, OnModelCreating'i kapsüller, yansımalar kullanarak indeksler oluşturur ve daha fazlasını içerir
https://www.itsvse.com/thread-9392-1-1.html

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
Feragatname:
Code Farmer Network tarafından yayımlanan tüm yazılım, programlama materyalleri veya makaleler yalnızca öğrenme ve araştırma amaçları içindir; Yukarıdaki içerik ticari veya yasa dışı amaçlarla kullanılamaz, aksi takdirde kullanıcılar tüm sonuçları ödemelidir. Bu sitedeki bilgiler internetten alınmakta olup, telif hakkı anlaşmazlıklarının bu siteyle hiçbir ilgisi yoktur. Yukarıdaki içeriği indirmeden sonraki 24 saat içinde bilgisayarınızdan tamamen silmelisiniz. Programı beğendiyseniz, lütfen orijinal yazılımı destekleyin, kayıt satın alın ve daha iyi orijinal hizmetler alın. Herhangi bir ihlal olursa, lütfen bizimle e-posta yoluyla iletişime geçin.

Mail To:help@itsvse.com