Saya menambahkan Model Data Entitas ADO.Net baru ke dalam proyek saya dan menggunakan Update Wizard untuk menambahkan tabel ke dalam model. Lima dari tabel yang dipilih ditambahkan ke permukaan desain. Dua tabel lainnya tidak akan ditambahkan. Saya memilihnya di wizard dan mengklik Selesai, namun tidak pernah muncul di permukaan desain.
Apakah ini bug, atau adakah situasi di mana tabel tidak dapat ditambahkan ke model (berdasarkan desain)?
UPDATE: XML (* .edmx) mengungkapkan masalahnya.
<!--Errors Found During Generation:
warning 6013: The table/view 'FooBar.dbo.Roles' does not
have a primary key defined and no valid primary key could be inferred.
This table/view has been excluded. To use the entity you will need to
review your schema, add the correct keys and uncomment it.-->
<!--<EntityType Name="Roles">
<Property Name="role_id" Type="decimal" />
<Property Name="role_desc" Type="nvarchar" MaxLength="30" />
</EntityType>-->
.net
visual-studio-2008
entity-framework
ado.net
primary-key
Robert Claypool
sumber
sumber
Jawaban:
Permukaan desain berbeda dari model entitas. Dimungkinkan untuk memiliki tabel dalam pemetaan di EDMX Anda yang tidak muncul di permukaan desain. Lihat file sebagai XML untuk melihat apakah ini masalahnya. Dalam kasus ini, Wisaya Pembaruan tidak akan mengizinkan Anda untuk menambahkan kembali tabel, karena mereka sudah menjadi bagian dari model entitas. Jadi, secara umum, Update Wizard tahu lebih banyak tentang model entitas Anda daripada tentang permukaan desain, per se .
Saya tidak berpikir itulah situasi Anda saat ini, tetapi itu akan memberi Anda gambaran umum untuk solusinya: masuk ke XML dan cari referensi ke tabel yang dimaksud.
sumber
Tetapkan Kunci Utama ke semua tabel atau hanya satu kotak centang yang tidak dicentang "Izinkan null" ke kolom mana pun dari setiap tabel. Ini bekerja untuk saya :)
sumber
1. Ubah struktur Tabel dan tambahkan Kolom Utama. Perbarui Model.
2. Ubah file .EDMX di Editor XML dan coba tambahkan tag Kolom Baru di bawah untuk tabel khusus ini. (TIDAK AKAN BEKERJA)
3. Alih-alih membuat Kolom Utama baru ke tabel Keluar, saya akan membuat kunci komposit dengan melibatkan semua kolom yang ada. (BERFUNGSI)
Kerangka Kerja Entitas: Menambahkan DataTable tanpa Kunci Utama ke Model Entitas.
sumber
Saya memiliki masalah ini juga, semua hal di atas tidak berhasil untuk saya. Yang membantu saya adalah sebagai berikut.
Saat Anda mencoba menyambungkan dengan database, database tersebut dapat memiliki pengguna berbeda dengan kredensial berbeda yang dapat diterima. Misalkan pengguna A hingga D.
Jika Anda mencoba untuk terhubung dengan pengguna pastikan bahwa pengguna memiliki kredensial yang benar diaktifkan, dalam hal ini, opsi baca dan tulis diaktifkan.
Untuk melakukan ini, jalankan MS SQL Server Managment Studio, terhubung dengan server SQL Anda dan pilih database yang Anda coba buat koneksi di studio visual. Di bawah 'your_dbname' -> Security -> Users Anda akan menemukan daftar pengguna. Klik kanan nama pengguna yang Anda coba untuk masuk dan pilih properti. Sebuah jendela terbuka. Pilih halaman 'Umum' (dipilih secara default) dan di bawah tab 'Keanggotaan peran database' pastikan 'db_datareader' dan 'db_datawrite' dipilih.
Catatan: Saat Anda masuk terlalu MS SQL Server Managment Studio pastikan Anda masuk dengan pengguna yang dapat mengaktifkan / menonaktifkan opsi ini ...
sumber
Periksa 'Nulls' di tabel khusus Anda. Jika semua kolom disetel ke 'Allow Null' Entity Framework menganggapnya sebagai tabel 'Null'. Saya memiliki masalah yang sama dan tidak mencentang 'Allow Null' dan itu menambahkan tabel yang diperlukan.
sumber
Tabel tanpa kunci utama tidak akan ditambahkan.
sumber
Solusi saya untuk ini adalah menghapus seluruh model dan membacanya termasuk tabel baru yang saya inginkan.
Saya tidak sengaja menghapus tabel di desainer sekali dan tidak dapat membacanya. Karenanya menghapus seluruh model dan membacanya.
Saya memiliki beberapa masalah dengan ini juga ( Model Data Entitas Ado.Net Tidak Memperbarui dengan Benar )
sumber
Ini telah diatasi dalam versi terbaru (lingkungan: VS 2012, .net framework 4.5). Cukup buka file .edmx dan tambahkan tabel / prosedur tersimpan / tampilan yang diperlukan. Tabel / tampilan yang tidak memiliki kunci utama akan dibuat sebagai tabel / tampilan hanya-baca.
sumber
Anda tidak perlu menghapus seluruh model (bisa jadi ratusan tabel!).
Wizard dapat menangani item "menambahkan baru", tetapi beberapa perubahan seperti mengubah kunci komposit dan mengganti nama kolom - Wizard tidak tahu apa yang harus dilakukan - sehingga tidak mencoba - dan hal-hal menjadi tidak sinkron.
JADI: HAPUS tabel yang dimaksud dari Model (mode konseptual) DAN dari Model. Store, lalu Perbarui model menggunakan Wizard, dan tambahkan kembali tabel yang dimaksud.
sumber
Hanya memberikan beberapa detail lebih lanjut untuk siapa saja yang belum pernah melakukan ini sebelumnya. Saya menggunakan visual studio 2013 dengan update 4 diinstal. Saya menambahkan beberapa bidang ke tabel, menghapus tabel dari model saya kemudian pergi untuk memperbarui dan tidak mengizinkan saya memeriksa tabel mana pun.
Saya memiliki kunci utama.
Saya membuat tabel tes baru, yang muncul dan itu akan membiarkan saya memeriksanya tetapi tidak asli saya.
Saya belum pernah membukanya dalam XML sebelumnya dan tidak tahu bagaimana melakukannya. Anda klik kanan pada file .edmx dan "buka dengan" - pilih editor xml.
tabel yang dimaksud ada di sana baik-baik, bahkan ada bidang baru (aneh).
Saya menghapus semua referensi ke sana (butuh beberapa kali) - setelah Anda menghapus satu dan menyimpannya, jika Anda mencoba membukanya dan tidak muncul, lanjutkan saja dan pilih "lihat XML" - lihat kesalahannya dan pada dasarnya ikuti bola yang memantul sampai Anda membersihkannya.
berharap detail ekstra membantu seseorang.
Joe
sumber
Salah satu cara mudah yang saya temukan adalah (di SQL Server Management Studio) menambahkan kolom ID tipe INT, hapus pilihan "Izinkan Nulls", dan di bawah Properti kolom (ID) >> Spesifikasi Identitas >> periksa (Is Identity), dan buat kenaikan pasti telah ditetapkan.
Setelah hal di atas selesai, kembali ke jendela .edmx Anda, klik kanan, dan Perbarui Model dari Database.
sumber
Anda dapat menambahkan tabel silang kolom Kunci Utama. Kemudian masalah teratasi
sumber
Salah satu solusi lain adalah memastikan akun yang Anda akses database melalui memiliki beberapa izin ke tabel, Pilih setidaknya. Tabel tidak akan ditambahkan jika akun tidak memiliki izin untuk itu.
Di SSMS di bawah Keamanan, klik kanan pengguna atau peran, lalu Properti. Kemudian klik Securables. Tabel atas memperlihatkan tabel yang saat ini dapat diakses. Jika tabel yang hilang tidak ada, klik cari dan temukan, sorot tabel di atas, lalu tetapkan izin di tabel bawah
sumber