Kerangka Kerja Entitas - Tambahkan Properti Navigasi Secara Manual

115

Saya membuat Entity Framework Model (4.0) dari database saya. Saya tidak mendesain database dan tidak memiliki kendali atas skema, tetapi ada beberapa tabel yang tidak memiliki batasan kunci asing yang ditentukan, tetapi ada hubungan implisit yang ditentukan.

Sebagai contoh:

Saya memiliki tabel bernama People yang memiliki kolom berikut: GenderID RaceID

Ada tabel untuk Gender dan Ras tetapi tidak ada kunci asing di tabel People.

Ketika saya mengimpor model itu tidak menambahkan Properti Navigasi untuk hubungan ini. Saya mencoba menambahkannya secara manual tetapi Dari Peran dan Peran ke Peran dinonaktifkan. Saya sendiri tidak yakin bagaimana menambahkan hubungan itu. Bagaimana saya melakukan ini?

Singkirkan
sumber

Jawaban:

181

Ya - tidak sesederhana itu.

Inilah yang Anda lakukan:

1 - Klik kanan pada desainer, Add -> Association

2 - Atur asosiasi dan kardinalitas (Orang * .. 1 Jenis Kelamin, Orang * .. 1 Ras)

3 - Masuk ke Model Browser -> Associations

4 - Klik kanan pada asosiasi yang baru Anda buat, klik Properties

5 - Di sini Anda perlu mengatur titik akhir untuk opsi kunci dan kaskade. Pastikan Anda mendapatkan titik akhir yang benar. Anda juga dapat menyiapkan batasan referensial di sini untuk properti navigasi implisit Anda.

6 - Petakan properti navigasi ke tabel / bidang yang relevan.

7 - Validasi model Anda, silangkan jari Anda.

Semoga ini membantu.

RPM 1984
sumber
20
1 untuk menyelamatkan rambutku yang tersisa. Saya akan menambahkan # 6 membutuhkan mengubah kolom kunci asing di halaman properti asosiasi, pengaturan Referensial Kendala. Tekan [...] untuk membuka dialog batasan referensial dan ubah bidang dummy yang disambungkan desainer ke tabel anak di bawah Properti Bergantung.
Joel Brown
8
Anda juga harus pergi ke properti tabel anak dan menghapus bidang dummy yang ditambahkan desainer (dan yang tidak memetakan ke bidang nyata apa pun di tabel anak).
Joel Brown
2
Dalam kasus Tampilan, pastikan juga bahwa Anda mendapatkan definisi Kunci Utama dengan benar (klik kanan pilih bidang terkait, tandai sebagai EntityKey di properti). Jika tidak, Anda mungkin mendapatkan 'Multiplisitas tidak valid dalam Peran dalam hubungan Karena Peran Tergantung mengacu pada properti kunci ...'
Mikl X
1
Pada # 2, Anda mungkin ingin memastikan untuk tidak mencentang kotak "Tambahkan properti kunci asing ke Entitas". Itu menciptakan sakit kepala yang tidak perlu jika Anda benar-benar tidak membutuhkannya.
Enkripsi
Setelah Anda memperbarui lagi model Anda dari database, entitas scaffold akan mempertahankan pengaitan yang ditambahkan secara manual?
voodoo_patch
45

Saya menemukan posting blog ini yang mengusulkan solusi berikut, yang bekerja sangat baik untuk saya (sayangnya saya tidak bisa mendapatkan RPM1984 untuk bekerja dalam situasi saya).

  1. Tambahkan Asosiasi melalui menu kontekstual klik kanan latar belakang desainer
  2. Siapkan Asosiasi Anda (pastikan untuk tidak mencentang pembuatan kunci asing)
  3. Klik kanan pada asosiasi dan pilih Properties
  4. Klik pada ...tombol untuk Batasan Referensial
  5. Siapkan hubungan antara kunci-kunci di dalamnya
  6. Verifikasi (dari menu kontekstual desainer)
  7. ???
  8. Keuntungan!
dav_i
sumber
4
+1 Poin 4 membuat saya melakukannya dengan benar, mengabaikannya dengan jawaban RPM194.
Hugo Logmans