web-dev-qa-db-ja.com

Entity Frameworkで列の順序を設定できる

エンティティフレームワークコードの最初のアプローチでデータベースの列の順序を設定するための可能な構成はありますか?

すべてのエンティティセットには、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; }

このフィールドをテーブルの最後に残しておきたい。モデルクラスの最後にこのフィールドを保持するのではなく、これを構成するために使用できるEF構成はありますか?.

8
Isha John

EF Coreでは列の順序 まだサポートされていません であるため、Entity Framework 6を​​使用していると想定しています。

データ属性またはFluent APIのいずれかを使用して、列の順序を設定できます。

データ属性を使用して列の順序を設定するには、System.ComponentModel.DataAnnotationsを参照して ColumnAttribute を使用します。プロパティ名と異なるようにする場合は、この属性を使用して列名を設定することもできます。

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

Orderパラメータはゼロベースであることに注意してください。

参照: http://www.entityframeworktutorial.net/code-first/column-dataannotations-attribute-in-code-first.aspx

または、DbContextクラスのOnModelCreatingメソッドでFluent APIを使用できます。

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

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

この方法は少し冗長ですが、何が起こっているかをより細かく制御できます。

6
Steve

ただ使う:

using System.ComponentModel.DataAnnotations.Schema;

コード:

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

注意:デフォルトでは列の順序が大きいため、この列のみを注文した場合は、この場合はより低い注文番号の別の列を注文しない限り、表の最初の列になります。0

1