Entity Framework - Manuel Olarak Gezinme Özelliği Ekle


115

Veritabanımdan bir Entity Framework Modeli (4.0) oluşturdum. Veritabanını tasarlamadım ve şema üzerinde herhangi bir kontrole sahip değilim, ancak tanımlanmış yabancı anahtar kısıtlamaları olmayan birkaç tablo var, ancak tanımlanmış örtük bir ilişki var.

Örneğin:

Aşağıdaki sütunlara sahip Kişiler adında bir tablom var: GenderID RaceID

Hem Cinsiyet hem de Irk için tablolar var ancak Kişiler tablosunda yabancı anahtar yok.

Modeli içe aktardığımda, bu ilişkiler için Gezinme Özellikleri eklemedi. Manuel olarak eklemeyi denedim, ancak Rolden ve Role'dan devre dışı bırakıldı. İlişkiyi nasıl ekleyeceğimi bilmiyorum. Bunu nasıl yaparım?

Yanıtlar:


181

Evet - bu o kadar basit değil.

İşte yaptığınız şey:

1 - Tasarımcıya sağ tıklayın, Ekle -> İlişkilendirme

2 - İlişkilendirmeyi ve kardinaliteleri kurun (Kişi * .. 1 Cinsiyet, Kişi * .. 1 Irk)

3 - Model Tarayıcıya gidin -> İlişkilendirmeler

4 - Yeni oluşturduğunuz ilişkilendirmelerinize sağ tıklayın, Özellikler'e tıklayın

5 - Burada anahtar ve basamaklama seçenekleri için uç noktaları ayarlamanız gerekir. Uç noktaları doğru aldığınızdan emin olun. Ayrıca burada örtük gezinme mülkünüz için bir başvuru kısıtlaması da ayarlayabilirsiniz.

6 - Gezinme özelliğini ilgili tablolara / alanlara eşleyin.

7 - Modelinizi doğrulayın, parmaklarınızı çaprazlayın.

Bu yardımcı olur umarım.


20
Saçımdan kalanları kurtarmak için +1. Ekleyeceğim # 6, ilişkilendirmenin özellikler sayfasındaki Referans Kısıtlama ayarındaki yabancı anahtar sütununu değiştirmeyi gerektirir. Referans kısıtlama diyaloğunu açmak ve tasarımcının Bağımlı Özellik altındaki alt tabloya taktığı kukla alanı değiştirmek için [...] düğmesine basın.
Joel Brown

8
Ayrıca, alt tablonun özelliklerine gitmeniz ve tasarımcının eklediği (ve alt tablodaki hiçbir gerçek alanla eşleşmeyen) kukla alanı silmeniz gerekir.
Joel Brown

2
Görünüm durumunda, Birincil Anahtar tanımınızı doğru yaptığınızdan da emin olun (sağ tıklayın ilgili alanları seçin, bunları özelliklerde Varlık Anahtarı olarak işaretleyin). Aksi takdirde, 'İlişkide Rol çokluk geçerli değil çünkü Bağımlı Rol, temel özelliklere atıfta bulunuyor ...'
mesajını alabilirsiniz

1
# 2'de, "Varlığa yabancı anahtar özellikleri ekle" onay kutusunun işaretini kaldırdığınızdan emin olmak isteyebilirsiniz. Gerçekten ihtiyacınız yoksa bu, bazı gereksiz baş ağrılarına neden olur.
Şifreleme

Modelinizi veritabanından tekrar güncellediğinizde, iskeleli varlıklar manuel olarak eklenen ilişkiyi koruyacak mı?
voodoo_patch

45

Benim için harika çalışan aşağıdaki çözümü öneren bu blog yazısına rastladım (maalesef RPM1984'leri benim durumumda çalıştıramadım).

  1. Tasarımcı arka planı aracılığıyla bir İlişkilendirme ekleyin sağ tıklama bağlamsal menü
  2. İlişkinizi kurun (yabancı anahtar oluşturma seçeneğinin işaretini kaldırdığınızdan emin olun)
  3. İlişkilendirmeye sağ tıklayın ve Özellikler'i seçin
  4. ...Referans Kısıtlama butonuna tıklayın
  5. İçindeki tuşlar arasındaki ilişkiyi kurun.
  6. Doğrula (tasarımcı bağlamsal menüsünden)
  7. ???
  8. Kar!

4
+1 Nokta 4 doğru yapmamı sağladı, RPM194 cevabıyla bunu gözden kaçırdım.
Hugo Logmans
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.