エンティティフレームワークコードの最初のアプローチでデータベースの列の順序を設定するための可能な構成はありますか?
すべてのエンティティセットには、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構成はありますか?.
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パラメータはゼロベースであることに注意してください。
または、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
この方法は少し冗長ですが、何が起こっているかをより細かく制御できます。
ただ使う:
using System.ComponentModel.DataAnnotations.Schema;
コード:
[DisplayColumn("Name" , Order = 1)]
public int UserName { get; set; }
注意:デフォルトでは列の順序が大きいため、この列のみを注文した場合は、この場合はより低い注文番号の別の列を注文しない限り、表の最初の列になります。0