可以在 Entity Framework 中设置列顺序
Possible to set column ordering in Entity Framework
在 entity framework 代码优先方法中是否有任何可能的配置来设置数据库列排序..?
我的所有实体集都应该有一些用于保存记录信息的公共字段
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; }
我想将此字段保留在 table 的末尾。是否有任何可能的 EF 配置我可以用来配置它而不是将这些字段保留在我的模型的末尾 class.
只需使用:
using System.ComponentModel.DataAnnotations.Schema;
代码:
[DisplayColumn("Name" , Order = 1)]
public int UserName { get; set; }
注意:默认情况下,列顺序采用较大的数字,因此如果您仅订购此列,它将排在 table 中的第一个,除非您订购了另一列具有较低顺序号的列,在本例中为: 0
我假设您使用的是 Entity Framework 6,因为 EF Core 中的列排序 is not yet supported。
您可以使用数据属性或 fluent API 来设置列顺序。
要使用数据属性设置列顺序,请参考 System.ComponentModel.DataAnnotations
并使用 ColumnAttribute
。如果您希望它不同于 属性 名称,您也可以使用此属性设置列名称。
[Column("CreatedAt", Order=0)]
public DateTime CreatedAt { get; set; }
[Column("CreatedBy", Order=1)]
public int CreatedBy { get; set; }
请注意订单参数是从零开始的。
或者,您可以在 DbContext class:
的 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
这种方式有点冗长,但您可以更好地控制正在发生的事情。
在 entity framework 代码优先方法中是否有任何可能的配置来设置数据库列排序..?
我的所有实体集都应该有一些用于保存记录信息的公共字段
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; }
我想将此字段保留在 table 的末尾。是否有任何可能的 EF 配置我可以用来配置它而不是将这些字段保留在我的模型的末尾 class.
只需使用:
using System.ComponentModel.DataAnnotations.Schema;
代码:
[DisplayColumn("Name" , Order = 1)]
public int UserName { get; set; }
注意:默认情况下,列顺序采用较大的数字,因此如果您仅订购此列,它将排在 table 中的第一个,除非您订购了另一列具有较低顺序号的列,在本例中为: 0
我假设您使用的是 Entity Framework 6,因为 EF Core 中的列排序 is not yet supported。
您可以使用数据属性或 fluent API 来设置列顺序。
要使用数据属性设置列顺序,请参考 System.ComponentModel.DataAnnotations
并使用 ColumnAttribute
。如果您希望它不同于 属性 名称,您也可以使用此属性设置列名称。
[Column("CreatedAt", Order=0)]
public DateTime CreatedAt { get; set; }
[Column("CreatedBy", Order=1)]
public int CreatedBy { get; set; }
请注意订单参数是从零开始的。
或者,您可以在 DbContext class:
的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
这种方式有点冗长,但您可以更好地控制正在发生的事情。