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
Barbara Streisandasal
2025-01-14 09:56:43440semak imbas

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:

<code class="language-csharp">modelBuilder.Entity<Event>().Property(e => e.EventID).HasDatabaseGeneratedOption(DatabaseGeneratedOption.None);</code>

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:

<code class="language-sql">ALTER TABLE Events ALTER COLUMN EventID INT NOT NULL</code>

Alternatif Berasaskan Atribut

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

<code class="language-csharp">[Key]
[DatabaseGenerated(DatabaseGeneratedOption.None)]
public int EventID { get; set; }</code>

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:
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