The repro below runs this query:
context.Set<Order>().OrderBy(o => o).ToList();
Order has a composite key consisting of two ints: Id1 and Id2. The order returned is:
1 1
1 2
1 3
2 3
2 2
2 1
3 4
3 1
The expected order is:
1 1
1 2
1 3
2 1
2 2
2 3
3 1
3 4
Repro:
using var context = new SomeDbContext(); context.Database.EnsureDeleted(); context.Database.EnsureCreated(); context.AddRange( new Order { Id1 = 1, Id2 = 1 }, new Order { Id1 = 1, Id2 = 2 }, new Order { Id1 = 1, Id2 = 3 }, new Order { Id1 = 2, Id2 = 3 }, new Order { Id1 = 2, Id2 = 2 }, new Order { Id1 = 2, Id2 = 1 }, new Order { Id1 = 3, Id2 = 4 }, new Order { Id1 = 3, Id2 = 1 }); context.SaveChanges(); var results = context.Set<Order>().OrderBy(o => o).ToList(); foreach (var result in results) { Console.WriteLine($"{result.Id1} {result.Id2}"); } public class SomeDbContext : DbContext { protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) => optionsBuilder //.UseSqlite("DataSource = db.dat") .UseMongoDB("mongodb://localhost:27017", "SomeDb3") .LogTo(Console.WriteLine, LogLevel.Information); protected override void OnModelCreating(ModelBuilder modelBuilder) { modelBuilder.Entity<Order>().HasKey(e => new { e.Id1, e.Id2 }); } } public class Order { public int Id1 { get; set; } public int Id2 { get; set; } }