web-dev-qa-db-fra.com

Possibilité de définir l'ordre des colonnes dans Entity Framework

Existe-t-il une configuration possible pour définir l'ordre des colonnes de la base de données dans la première approche du code de structure d'entité?

Tous mes ensembles d'entités devraient avoir des champs communs pour garder recordinfo

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; }

Je veux garder ces champs à la fin de la table. Existe-t-il une configuration EF possible que je puisse utiliser pour configurer ceci plutôt que de conserver ces champs à la fin de ma classe de modèle.

6
Isha John

Je suppose que vous utilisez Entity Framework 6, car l'ordre des colonnes n'est pas encore pris en charge dans EF Core.

Vous pouvez utiliser des attributs de données ou l’API fluide pour définir l’ordre des colonnes.

Pour utiliser un attribut de données pour définir l'ordre des colonnes, référencez System.ComponentModel.DataAnnotations et utilisez la variable ColumnAttribute . Vous pouvez également définir le nom de la colonne avec cet attribut si vous souhaitez qu'il diffère du nom de la propriété.

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

Notez que le paramètre Order est basé sur zéro.

Voir aussi: http://www.entityframeworktutorial.net/code-first/column-dataannotations-attribute-in-code-first.aspx

Vous pouvez également utiliser l'API Fluent dans la méthode OnModelCreating de votre classe DbContext:

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
    //Configure Column
    modelBuilder.Entity<EntityClass>()
                .Property(p => p.CreatedAt)
                .HasColumnOrder(0);
}

Voir aussi: http://www.entityframeworktutorial.net/code-first/configure-property-mappings-using-fluent-api.aspx

Cette méthode est un peu plus détaillée, mais vous pouvez mieux contrôler ce qui se passe.

4
Steve

juste utiliser:

using System.ComponentModel.DataAnnotations.Schema;

Code: 

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

Remarque: cloumn arder prend par défaut un grand nombre. Par conséquent, si vous avez commandé uniquement cette colonne, ce sera la première du tableau sauf si vous avez commandé une autre colonne avec un numéro d'ordre inférieur, dans ce cas: 0 Hope Helps!

0
Zaheer Ul Hassan