Alte Post dachte ich würde teilen, was ich mit Entity Framework 6.1.3 gefunden habe.
Ich habe eine einfache Datenschichtbibliothek mit C# und .NET Framework 4.6.1 erstellt, eine einfache Repository/Service-Klasse, eine erste Codekontextklasse hinzugefügt und meine web.config-Datei auf eine lokale SQL Express 2014-Datenbank gelenkt. Ich
In der Entity-Klasse hinzugefügt, um das folgende Attribut Konstruktor der Spalte Id:
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public Guid Id { get; set; }
Dann habe ich eine neue Migration durch die folgende in Visual Studio 2015 Package Manager eingeben:
Add-Migration
Geben Sie der Migration einen Namen und warten Sie dann, bis die DbMig- tation-Klasse erstellt wurde. Bearbeiten Sie die Klasse und fügen Sie den folgenden Create Betrieb:
CreateTable(
"dbo.Article",
c => new
{
Id = c.Guid(nullable: false, identity: true),
Title = c.String(),
Content = c.String(),
PublishedDate = c.DateTime(nullable: false),
Author = c.String(),
CreateDate = c.DateTime(nullable: false),
})
.PrimaryKey(t => t.Id);
}
Die obige Tabelle ist ein Beispiel der entscheidende Punkt ist hier die folgende builder Anmerkung:
nullable: false, identity: true
Dies sagt EF die Spalte specifiy als nicht nullabe und Sie möchten es als Identitätsspalte festlegen, die von EF gesetzt werden soll.
Führen Sie die Migration erneut mit dem folgenden Befehl:
update-database
Dadurch wird die Migration Klasse fallen zuerst die Tabelle (Down() -Methode), dann die Erstellung der Tabelle (Up() -Methode) ausgeführt werden.
Führen Sie Ihre Komponententests und/oder verbinden Sie mit der Datenbank und führen Sie eine Select-Abfrage, sollten Sie Ihre Tabelle in seiner neuen Form sehen, fügen Sie einige Daten mit Ausnahme der Id-Spalte und Sie sollten neue Guid sehen (oder was für Datentyp Sie wählen) erzeugt werden.
Ich hatte die DatabaseGeneratedOption.Identity gesehen, aber tbh ich war faul und hatte nicht hineingelesen, ich nahm nur an, dass es die Spalte das PKey-Feld machte. Danke, ich werde es versuchen. – JamesStuddart
Funktioniert das noch mit Multitenant-Datenbanken? – amd
@Ahmad Es wird nicht funktionieren, wenn jeder Mandant seinen eigenen Seed hat – Eranga