Gibt es eine mögliche Konfiguration zum Festlegen der Reihenfolge der Datenbankspalten im ersten Ansatz für den Entity Framework Code?
Mein gesamtes Entity-Set sollte einige gemeinsame Felder zum Verwalten von Datensatzinformationen enthalten
public DateTime CreatedAt { get; set; }
public int CreatedBy { get; set; }
public DateTime ModifiedAt { get; set; }
public int ModifiedBy { get; set; }
public bool IsDeleted { get; set; }
Ich möchte diese Felder am Ende der Tabelle beibehalten. Gibt es eine mögliche EF-Konfiguration, mit der ich das konfigurieren kann, anstatt diese Felder am Ende meiner Modellklasse zu belassen.
Ich gehe davon aus, dass Sie Entity Framework 6 verwenden, da die Spaltenreihenfolge noch nicht unterstützt wird in EF Core.
Sie können entweder Datenattribute oder die fließende API verwenden, um die Spaltenreihenfolge festzulegen.
Wenn Sie ein Datenattribut zum Festlegen der Spaltenreihenfolge verwenden möchten, verweisen Sie auf System.ComponentModel.DataAnnotations
und verwenden Sie die ColumnAttribute
. Sie können den Spaltennamen auch mit diesem Attribut festlegen, wenn er vom Eigenschaftsnamen abweichen soll.
[Column("CreatedAt", Order=0)]
public DateTime CreatedAt { get; set; }
[Column("CreatedBy", Order=1)]
public int CreatedBy { get; set; }
Beachten Sie, dass der Parameter Order nullbasiert ist.
Siehe auch: http://www.entityframeworktutorial.net/code-first/column-dataannotations-attribute-in-code-first.aspx
Alternativ können Sie die Fluent-API in der OnModelCreating
-Methode Ihrer DbContext-Klasse verwenden:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
//Configure Column
modelBuilder.Entity<EntityClass>()
.Property(p => p.CreatedAt)
.HasColumnOrder(0);
}
Siehe auch: http://www.entityframeworktutorial.net/code-first/configure-property-mappings-using-fluent-api.aspx
Dieser Weg ist etwas ausführlicher, aber Sie können ein bisschen mehr Kontrolle darüber haben, was passiert.
benutz einfach :
using System.ComponentModel.DataAnnotations.Schema;
Code:
[DisplayColumn("Name" , Order = 1)]
public int UserName { get; set; }
Hinweis: Cloumn Arder nimmt standardmäßig eine große Zahl an. Wenn Sie nur diese Spalte bestellt haben, wird sie als erste in der Tabelle angezeigt, es sei denn, Sie haben eine andere Spalte mit einer niedrigeren Bestellnummer bestellt. In diesem Fall lautet: 0 Hope Helps!