我需要先在代码中关闭字母顺序。
这是我的课程简化
public class Person
{
[Key,Column("PersonId")]
public int Id { get; set; }
[MaxLength(50)]
public string PersonName{ get; set; }
public DateTime? JoinDate{ get; set; }
public int? Gender{ get; set; }
}
当我运行命令生成数据库时
dnx ef migrations add InitialMigration
dnx ef database update
当我在SQL Server 2012中以设计模式查看时,除主键之外的数据库列按字母顺序生成。
如何强制它按照班级中出现的顺序创建列。
我查看了github并且只能找到this这个问题并没有解释如何将其关闭。
答案 0 :(得分:3)
EF7迁移中没有这种行为的一流支持。您可以通过显式指定SQL迁移操作来解决此问题。
这意味着您不需要在迁移中使用“CreateTable”方法,而是需要显式编写SQL。
migrationBuilder.Sql("CREATE TABLE Person ...");
答案 1 :(得分:-1)
如果您正在寻找列顺序,我认为它非常简单。在DbContext类中,重写OnModelCreating。然后抓住modelBuilder,从中拉出EntityTypeConfiguration。然后使用它按如下方式配置订单。
public class AppDbContext : IdentityDbContext<AppUser, AppRole, int, AppUserLogin, AppUserRole, AppUserClaim>
{
public AppDbContext() : base("AvbhHis")
{
}
public DbSet<PatientCategory> Product { get; set; }
public DbSet<LookupBase> LookupBase { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder
.Entity<PatientCategoryLookup>()
.Map<PatientCategoryLookup>(m =>
{
m.ToTable("LookupPatientCategory");
m.MapInheritedProperties();
});
EntityTypeConfiguration<PatientCategoryLookup> config = modelBuilder.Entity<PatientCategoryLookup>();
config.Property(e => e.Id).HasColumnOrder(0);
config.Property(e => e.PatientCatgCode).HasColumnOrder(1);
config.Property(e => e.PatientCatgName).HasColumnOrder(2);
config.Property(e => e.Description).HasColumnOrder(3);
config.Property(e => e.ModifiedTime).HasColumnOrder(4);
config.Property(e => e.History).HasColumnOrder(5);
base.OnModelCreating(modelBuilder);
}
}
然后你需要添加迁移然后更新数据库。