The ColumnAttribute lets you change three things about property mapping to database columns.
- The name
- The order in which it appears in the field list in the table
- The type
If you look at the documentation for ORDER on ColumnAttribute it simply tells you that its “zero-based” and I comletely misundestood that.
I set a property’s order to “1”
[Column("DateStarted",Order=1,TypeName ="date")]
public DateTime CreateDate { get; set; }
expecting it to magically become the 2nd column listed in the table.
But it was the first.
Here’s why with thanks to David DeWinter for pointing me in the right direction.
The value is relative to all other properties.
And all of the other properties are not 0, 1, 2, 3, etc.
The default is Int32.Max, i.e. 2,147,483,647.
So my DateStarted field had the lowest value after all. It was Order=1 while all of the others were Order=2,147,483,647.
You’d see the effect better if you set the order on a number of the properties. The lowest # you can use is zero, which is where “zero-based” comes in.
Might have been obvious to others, but I was awfully confused. But you know, it’s Friday afternoon….
And I’ve been told the docs will get a clarification. 🙂
Sign up for my newsletter so you don't miss my conference & Pluralsight course announcements!
It is funny!
Good to know! Thank you Julie for sharing…