3

Gibt es eine mögliche Konfiguration zum Festlegen der Reihenfolge der Datenbankspalte in Entity Framework Code ersten Ansatz ..?Möglich, Spaltenreihenfolge in Entity Framework zu setzen

Alle meine Entitätssatz sollte für die Aufbewahrung record

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 am Ende der Tabelle diese Felder behalten wollen einige gemeinsame Felder müssen. Gibt es eine mögliche EF-Konfiguration, die ich verwenden kann, um dies zu konfigurieren, anstatt diese Felder am Ende meiner Modellklasse zu behalten.

+0

Was ist, wenn ich zum Beispiel 3 Vererbungsebenen habe und immer noch die vollständige Kontrolle über die Spaltenreihenfolge habe? Danke! –

Antwort

4

Ich nehme an, Sie verwenden Entity Framework 6 seit Spalte Reihenfolge is not yet supported in EF Core.

Sie können entweder die Datenattribute oder die flüssige API verwenden, um die Spaltenreihenfolge festzulegen.

Um ein Datenattribut zum Festlegen der Spaltenreihenfolge zu verwenden, geben Sie System.ComponentModel.DataAnnotations ein und verwenden Sie die ColumnAttribute. Sie können den Spaltennamen auch mit diesem Attribut festlegen, wenn er vom Namen der Eigenschaft abweichen soll.

[Column("CreatedAt", Order=0)] 
public DateTime CreatedAt { get; set; } 
[Column("CreatedBy", Order=1)] 
public int CreatedBy { get; set; } 

Beachten Sie, dass der Befehlsparameter nullbasiert ist.

Siehe auch:

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

diese Weise ein bisschen mehr ist http://www.entityframeworktutorial.net/code-first/column-dataannotations-attribute-in-code-first.aspx

Alternativ können Sie die Fluent API in der OnModelCreating Methode in Ihrer DbContext Klasse verwenden können, ausführlich, aber Sie können mehr Kontrolle darüber haben, was passiert.

+0

Danke Steve für die tolle Wiederholung. Ich habe noch eine Frage, sagen wir, wenn ich die Spaltenreihenfolge für einige Felder in meinem Modell festlege, was dann die Reihenfolge der verbleibenden Spalte ist (ich meine die Spalte ohne Bestellnummer im selben Modell). –

+0

@IshaJohn Ich glaube, dass sie nach Ihren nummerierten Spalten in alphabetischer Reihenfolge angeordnet sind. Ich bin mir nicht sicher, was passiert, wenn Sie nicht bei 0 starten. – Steve

0

nur verwenden:

using System.ComponentModel.DataAnnotations.Schema; 

Code:

[DisplayColumn("Name" , Order = 1)] 
public int UserName { get; set; } 

Hinweis: cloumn arder standardmäßig nimmt eine große Zahl also, wenn Sie nur diese Spalte bestellt es erste in der Tabelle sein wird, es sei denn, Sie bestellte eine andere Spalte mit einer niedrigeren Bestellnummer, die in diesem Fall ist: 0 Hoffnung hilft!

Verwandte Themen