Closed
Description
#2272 matched the CLR reflection order for columns within a table.
During design, we decided to wait for more feedback before honoring the value of ColumnAttibute.Order
on the properties.
If the implementation of #2272 is insufficient for you and specifying something like [Column(Order = 1)]
would help, please vote for this issue and add details about your scenario (if not already listed) below.
Activity
yitzchokneuhaus1 commentedon May 9, 2018
@bricelam Is this enhancement scheduled for the near future to be implemented in either EF Core or EF6?
bricelam commentedon May 9, 2018
It works in EF6. Still on the Backlog of EF Core.
samconn commentedon May 30, 2018
+1 for implementing this feature, and sooner rather than later.
We're porting an SAAS application from EF6x to EFCore and were a wee bit taken aback to find that the Order designation on the ColumnAttribute is being ignored.
But kudos to the whole team (and community!) for at least going open-kimono on the design discussions to at least help us understand the reasoning.
bricelam commentedon Jun 18, 2018
@andytaw mentioned another good case for this:
MelGrubb commentedon Jul 12, 2018
Those who work in the database all day tend like their columns in decreasing order of "importance", with the most significant or often-used coming at the start, and picky details way over on the right out of the way, or sometimes they like them clustered in neighborhoods where related fields are next to each other. Either way, this means that the column order can be significant to some team members. Meanwhile, over in the land of code, I like to use tools like ReSharper or CodeMaid to automatically sort my C# code, which drastically reduces merge collisions. Really, I can't recommend it enough for team projects, it's a huge gain in productivity.
As it stands now, I can't make both sets of developers happy. I really need a way to specify the order of the database columns, and it seems to be that using the existing DataAnnotations' ColumnAttribute would be an ideal way to do this.
As for strategy, I'd recommend putting the properties with the attribute first, in increasing order according to the Order property of the attribute, and then the remaining properties in their existing "natural" order, although that order is non-deterministic and shouldn't be relied upon to remain stable in the future.
pwen090 commentedon Sep 20, 2018
@bricelam you mentioned it on #2272 but to reiterate and upvote here if we have something like:
This will cause the primary key Id to be output as the last column. I know we can edit migration files but surely somewhere along the lines someone will forget to do that and make it a pain to clean up. It would be great if we can either support Order attribute or at least have the generators try harder to always put key columns first.
bricelam commentedon Sep 20, 2018
@pwen090 Tracked by #11314 (comment)
smitpatel commentedon Sep 21, 2018
Afaik the model posted by @pwen090 wouldn't work if
Blog
is mapped since derived types cannot have keys.92 remaining items