可以在Entity Framework中设置列排序

时间:2017-04-06 05:51:30

标签: c# entity-framework ef-code-first entity-framework-6 ef-fluent-api

是否有任何可能的配置来设置实体框架代码中的数据库列排序第一种方法..?

我的所有实体集都应该有一些用于保存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配置可用于配置此配置,而不是将此字段保留在模型类的末尾。

2 个答案:

答案 0 :(得分:4)

我假设您使用的是Entity Framework 6,因为EF Core中的列排序is not yet supported

您可以使用数据属性或流畅的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

这种方式有点冗长,但您可以更好地控制发生的事情。

答案 1 :(得分:0)

只需使用:

using System.ComponentModel.DataAnnotations.Schema;

代码:

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

注意:默认情况下,列顺序需要一个大数字,因此如果您只订购此列,它将是表中的第一个,除非您订购了另一个具有较低订单号的列,在这种情况下:0