Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Entity Framework 4 Tabel Per Hierarki - Bagaimana Mendefinisikan Properti Navigasi Pada Anak?

Jadi saya memecahkan beberapa masalah saya, tetapi saya menemui jalan buntu.

Pertama-tama, ketika Anda membuat FK referensi sendiri di sisi basis data, ketika Anda mencoba dan "Perbarui Model dari Basis Data", Entity Framework akan menambahkan properti navigasi ini ke tipe dasar utama, karena tidak memiliki arti eksplisit TPH - Anda perlu melakukan ini di sisi model.

TETAPI, Anda dapat menambahkan properti navigasi secara manual ke tipe turunan.

WRT kesalahan ini:

Itu karena saya memiliki FK yang disebut "Location_State" yang saya coba gunakan untuk hubungan "ZipCode_State", DAN hubungan "City_State" - yang tidak berfungsi (masih tidak tahu mengapa).

Jadi untuk mengatasinya, saya harus menambahkan kolom ekstra dan FK ekstra - satu disebut "ZipCode_State", dan yang lain disebut "City_State" - jelas itu harus 1-1 antara navs dan FK fisik.

Itu adalah bidang diskriminator saya. Di sisi basis data, ini tidak dapat dibatalkan .

Saya membaca utas tentang masalah ini, dan mereka mengatakan Anda perlu mengubah hubungan dari 0..* menjadi 1..* - tetapi hubungan saya sudah menjadi 1..*.

Jika Anda melihat tabel database aktual "Lokasi" saya di atas, semua FK dapat dibatalkan (harus demikian). Oleh karena itu saya mulai bertanya-tanya apakah hubungan saya harus 0..*.

Tetapi mereka dapat dibatalkan karena TPH - tidak semua "Lokasi" akan memiliki "Negara". Tetapi jika Lokasi itu adalah "Kota", maka HARUS memiliki "Negara".

Perasaan saya semakin terhibur dengan pertanyaan SO ini:ADO EF - Kesalahan Pemetaan Asosiasi antara Jenis Turunan di TPH

Saya sebenarnya mencoba solusi itu (bahkan sebelum saya menemukannya), dan solusinya tidak berhasil untuk saya. Saya bahkan mencoba mengubah semua hubungan dari 1..* menjadi 0..*, dan tetap tidak berhasil.

Buang-buang waktu di sini, saya sudah kembali ke TPT.

Pada akhirnya, dengan TPH saya akan memiliki tabel yang sangat besar, dengan banyak kolom yang redundan dan dapat dibatalkan. JOIN-bijaksana, ini lebih efisien. Tapi setidaknya dengan TPT saya tidak diharuskan memiliki FK nullable dan self-referencing.

Jika ada yang punya solusi untuk masalah ini, beri tahu saya. Tapi sampai saat itu, saya tetap menggunakan TPT.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Pivot beberapa kolom berdasarkan satu kolom di SQL Server

  2. Cara menggunakan SSIS API untuk membaca paket dan menentukan urutan tugas dari kode (PrecedenceConstraints)

  3. SQLServer. Alias ​​Tidak Berfungsi

  4. Instal Ekstensi Agen Server SQL di Azure Data Studio

  5. Bagaimana cara mengganti string di Kolom Tabel SQL Server