Saya tidak dapat menemukan cara untuk menambahkan batasan unik ke bidang saya dengan menggunakan atribut:
public class User
{
[Required]
public int Id { get; set; }
[Required]
// [Index("IX_FirstAndSecond", 2, IsUnique = true)] not supported by core
public string Email { get; set; }
[Required]
public string Password { get; set; }
}
Saya menggunakan paket-paket ini:
"Microsoft.EntityFrameworkCore": "1.0.1",
"Microsoft.EntityFrameworkCore.SqlServer": "1.0.1",
"Microsoft.EntityFrameworkCore.SqlServer.Design": "1.0.1",
"Microsoft.EntityFrameworkCore.Tools": "1.0.0-preview2-final",
Jawaban:
Pada inti EF Anda tidak dapat membuat Indeks menggunakan anotasi data. Namun Anda dapat melakukannya menggunakan Fluent API.
Seperti ini di dalam diri Anda
{Db}Context.cs
:... atau jika Anda menggunakan kelebihan dengan buildAction:
Anda dapat membaca lebih lanjut tentang ini di sini: Indeks
sumber
HasAlternateKey
Juga jika Anda ingin membuat batasan unik pada beberapa kolom, Anda cukup melakukan ini (mengikuti tautan @Sathath )
sumber
Solusi untuk EF Core
Tabel DB akan terlihat seperti ini:
Rujuk ke dokumen EF Core
sumber
If you just want to enforce uniqueness of a column then you want a unique index rather than an alternate key. In EF, alternate keys provide greater functionality than unique indexes because they can be used as the target of a foreign key.
OP bertanya tentang apakah mungkin untuk menambahkan atribut ke kelas Entitas untuk Kunci Unik. Jawaban singkatnya adalah bahwa hal itu mungkin, tetapi bukan fitur yang tidak biasa dari Tim Inti EF. Jika Anda ingin menggunakan Atribut untuk menambahkan Kunci Unik ke kelas entitas Inti Entitas Kerangka Anda, Anda bisa melakukan apa yang saya posting di sini
sumber
Untuk seseorang yang mencoba semua solusi ini tetapi tidak berhasil coba yang ini, itu berhasil untuk saya
sumber
Untuk menggunakannya di inti EF melalui konfigurasi model
sumber
Tak satu pun dari metode ini bekerja untuk saya di .NET Core 2.2 tetapi saya dapat mengadaptasi beberapa kode yang saya miliki untuk mendefinisikan kunci primer yang berbeda untuk bekerja untuk tujuan ini.
Dalam contoh di bawah ini saya ingin memastikan bidang OutletRef unik:
Ini menambahkan indeks unik yang diperlukan dalam database. Yang tidak dilakukannya adalah menyediakan kemampuan untuk menentukan pesan kesalahan khusus.
sumber
Kami dapat menambahkan indeks kunci unik dengan menggunakan api fasih. Kode di bawah ini berfungsi untuk saya
sumber