Rumah > pembangunan bahagian belakang > C++ > Bagaimana untuk Menghalang Rangka Kerja Entiti daripada Menjana Kunci Utama Secara Automatik?

Bagaimana untuk Menghalang Rangka Kerja Entiti daripada Menjana Kunci Utama Secara Automatik?

Barbara Streisand
Lepaskan: 2025-01-14 09:56:43
asal
507 orang telah melayarinya

How to Prevent Entity Framework from Automatically Generating Primary Keys?

Menindas Penjanaan Kunci Utama Automatik dalam Rangka Kerja Entiti

Pendekatan pertama kod Rangka Kerja Entiti selalunya menjana kunci utama secara automatik, khususnya lajur identiti yang meningkat secara automatik. Tingkah laku automatik ini tidak selalunya sesuai. Artikel ini menggariskan cara untuk mengatasi kefungsian lalai ini.

Satu pendekatan biasa menggunakan konfigurasi API yang fasih:

modelBuilder.Entity<Event>().Property(e => e.EventID).HasDatabaseGeneratedOption(DatabaseGeneratedOption.None);
Salin selepas log masuk

Walau bagaimanapun, ini boleh membawa kepada ralat: "Tidak boleh memasukkan nilai eksplisit untuk lajur identiti dalam jadual 'Acara' apabila IDENTITY_INSERT ditetapkan kepada MATI."

Memahami Ralat

Ralat ini timbul daripada konflik. DatabaseGeneratedOption.None menghalang EF daripada menjana ID, tetapi jadual pangkalan data masih mempunyai sifat IDENTITY, mewujudkan pertembungan apabila cuba menetapkan nilai kunci secara manual.

Penyelesaian

Penyelesaian melibatkan melumpuhkan sifat IDENTITY pada lajur ID dalam pangkalan data. Gunakan arahan SQL ini:

ALTER TABLE Events ALTER COLUMN EventID INT NOT NULL
Salin selepas log masuk

Alternatif Berasaskan Atribut

Sebagai alternatif, anda boleh menggunakan atribut terus dalam kelas entiti anda:

[Key]
[DatabaseGenerated(DatabaseGeneratedOption.None)]
public int EventID { get; set; }
Salin selepas log masuk

Kaedah ini juga berfungsi dengan betul dengan Teras EF.

Dengan melaksanakan penyelesaian ini, pembangun memperoleh kawalan ke atas penetapan kunci utama, menentukan nilai secara manual dan memintas penjanaan automatik lalai EF.

Atas ialah kandungan terperinci Bagaimana untuk Menghalang Rangka Kerja Entiti daripada Menjana Kunci Utama Secara Automatik?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan