We should support specifying an index column for collection navigation properties so that the order can be maintained transparently.
With types like this...
class Order
{
public int Id { get; set; }
public IList<LineItem> LineItems { get; } = new List<LineItem>();
}
class LineItem
{
public int Id { get; set; }
public int OrderId { get; set; }
public Order Order { get; set; }
}
...configured something like this...
modelBuilder.Entity<Order>().HasMany(o => o.LineItems).WithOne(i => i.Order)
.WithIndexColumn("OrderIndex");
...a table like this would be created.
CREATE TABLE LineItem (
Id INT NOT NULL PRIMARY KEY,
OrderId INT NOT NULL REFERENCES Order,
OrderIndex INT NOT NULL
)
Then whenever Order.LineItems is loaded, the order would be guaranteed.
var order = db.Orders.Include(o => o.LineItems).First(o => o.Id == 1);
var firstItem = order.LineItems[0]; // Deterministic!
We should support specifying an index column for collection navigation properties so that the order can be maintained transparently.
With types like this...
...configured something like this...
...a table like this would be created.
Then whenever
Order.LineItemsis loaded, the order would be guaranteed.