Hal ini membuat saya gila, dan kesalahan itu tidak ada artinya bagi saya:
Tidak dapat memperbarui EntitySet 'TableB' karena memiliki DefiningQuery dan tidak ada elemen dalam elemen untuk mendukung operasi saat ini.
Tabel saya diletakkan seperti ini:
TabelA int idA (identitas, kunci utama) ... TabelB int idA (FK untuk TableA.idA) int val
TableB tidak memiliki kunci utama yang ditentukan di server SQL. Kerangka kerja entitas telah mengimpor tabel dan pengaitan dan menetapkan kedua bidang sebagai kunci. Tapi itu akan menampilkan kesalahan itu ketika saya mencoba melakukan penyisipan ke dalam tabel!
Apa yang salah??
Sunting: Seperti yang disarankan oleh Alex, solusinya adalah ini:
- Klik kanan pada file edmx, pilih Open with, XML editor
- Temukan entitas di elemen edmx: StorageModels
- Hapus seluruh DefiningQuery
- Ubah nama toko: Schema = "dbo" menjadi Schema = "dbo" (jika tidak, kode akan menghasilkan kesalahan yang mengatakan bahwa nama tidak valid)
- Hapus toko: Nama properti
Saya membiarkan kunci seperti itu, karena tidak masalah bagi saya bahwa kedua kolom adalah bagian dari kunci.
asp.net
entity-framework
Palantir
sumber
sumber
Jawaban:
Nah ketika tabel ditemui tanpa PrimaryKey itu diperlakukan sebagai Tampilan.
Dan tampilan muncul di file EDMX (buka di editor XML untuk melihatnya) di elemen StorageModel \ EntitySet [n] \ DefiningQuery.
Jika Anda memiliki DefiningQuery, Entitas menjadi hanya-baca kecuali Anda menambahkan fungsi modifikasi. Anda memerlukan 3 fungsi modifikasi (disebut juga Prosedur Tersimpan) satu untuk masing-masing Sisipkan, Perbarui, dan Hapus.
Tetapi Anda memiliki dua pilihan:
Ubah definisi kunci:
Dalam kasus Anda, saya merekomendasikan (1).
sumber
Tambahkan saja kunci utama ke tabel. Itu dia. Masalah terpecahkan.
sumber
Saya kehilangan kunci utama di meja saya dan mendapat pesan kesalahan ini. Satu hal yang saya catat adalah setelah saya menambahkan kunci ke tabel, saya perlu menghapus tabel dari edmx menggunakan desainer, simpan edmx, lalu perbarui lagi untuk menambahkan tabel kembali. Itu tidak mengambil kunci karena sudah ditetapkan sebagai tampilan. Ini tidak perlu mengedit edmx secara manual.
sumber
Tambahkan kunci utama ke tabel, hapus model dari model edmx, lalu pilih pembaruan dari database, buat dan jalankan ...... karya
sumber
@Palant. Pastikan kedua tabel Anda memiliki kumpulan Kunci Utama, dan berhati-hatilah dengan beberapa kunci utama yang disetel dalam sebuah tabel.
sumber
Semoga ini akan menyelesaikan masalah.
sumber