webentwicklung-frage-antwort-db.com.de

Möglichkeit, die Spaltenreihenfolge in Entity Framework

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.

6
Isha John

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.

4
Steve

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!

0