Ich kann mit dem folgenden Attribut keine Möglichkeit finden, meinem Feld eine eindeutige Einschränkung hinzuzufügen:
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; }
}
Ich benutze diese Pakete:
"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",
c#
entity-framework
entity-framework-core
Vadim M.
quelle
quelle
Antworten:
Auf EF Core können Sie keine Indizes mithilfe von Datenanmerkungen erstellen. Sie können dies jedoch mithilfe der Fluent-API tun.
So in deinem
{Db}Context.cs
:... oder wenn Sie die Überladung mit der buildAction verwenden:
Mehr dazu lesen Sie hier: Indizes
quelle
HasAlternateKey
Auch wenn Sie eindeutige Einschränkungen für mehrere Spalten erstellen möchten, können Sie dies einfach tun (folgen Sie dem Link von @ Sampath ).
quelle
Lösung für EF Core
Die DB-Tabelle sieht folgendermaßen aus:
Siehe EF Core-Dokumente
quelle
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.
Das OP fragt, ob es möglich ist, einer Entitätsklasse ein Attribut für einen eindeutigen Schlüssel hinzuzufügen. Die kurze Antwort lautet, dass dies möglich ist, jedoch keine sofort einsatzbereite Funktion des EF Core-Teams. Wenn Sie ein Attribut verwenden möchten, um Ihren Entity Framework Core-Entitätsklassen eindeutige Schlüssel hinzuzufügen, können Sie das tun, was ich hier gepostet habe
quelle
Für jemanden, der all diese Lösungen ausprobiert, aber nicht funktioniert, versuchen Sie diese, es hat für mich funktioniert
quelle
Verwendung im EF-Kern über die Modellkonfiguration
quelle
Keine dieser Methoden funktionierte in .NET Core 2.2 für mich, aber ich konnte einen Code anpassen, den ich zum Definieren eines anderen Primärschlüssels für diesen Zweck hatte.
In der folgenden Instanz möchte ich sicherstellen, dass das Feld OutletRef eindeutig ist:
Dadurch wird der erforderliche eindeutige Index in die Datenbank eingefügt. Was es jedoch nicht tut, ist die Möglichkeit, eine benutzerdefinierte Fehlermeldung anzugeben.
quelle
Wir können einen eindeutigen Schlüsselindex hinzufügen, indem wir eine fließende API verwenden. Der folgende Code hat bei mir funktioniert
quelle