I Have an EF Core 3.1 code first project in which most classes inherit from a common base class named BusinessObject.
public abstract class BusinessObject
{
[Required()]
[Column("Id", Order = 0)]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
[Column("Comment", Order = 100)]
public string Comment { get; set; }
[Required()]
[Column("CreatedAt", Order = 101)]
public DateTimeOffset CreatedAt { get; set; } = DateTime.UtcNow;
[Required()]
[Column("CreatedByUserId", Order = 102)]
public int CreatedByUserId { get; set; }
//A few more columns....
}
[Table("MyTable", Schema = "SampleSchema")]
public class MyTable: BusinessObject
{
[Column("MyColumns1", Order = 1)]
[MaxLength(256)]
public string MyColumns1{ get; set; }
[Column("MyColumns2", Order = 2)]
[MaxLength(256)]
public string MyColumns2{ get; set; }
}
As you can see, I want to set the order of the columns by data annotations and I would expect a table to be created like this:
- Id
- MyColumns1
- MyColumns2
- Comment
- CreatedAt
- CreatedByUserId
In reality, the migration does
- Id
- Comment
- CreatedAt
- CreatedByUserId
- MyColumns1
- MyColumns2
What am I missing? Is this possible by Fluent API? I prefer data annotations to keep the DBContext lean.