Composite primary keys
When we have composite primary keys, we need to give them an order.
Problem
In some cases, you may need to have composite primary keys, that is, have a primary key that is composed of not a single column, but many. This is certainly a valid requirement, but, unless you configure it properly, Entity Framework will not work. And something that does not work is mapping attributes:
using System; using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; public class MyClassWithCompositeKey { [Key] [Column(Order = 0)] public int KeyA { get; set; } [Key] [Column(Order = 1)] public string KeyB { get; set; } [Key] [Column(Order = 2)] public Guid KeyC { get; set; } }
Again, the preceding code will not work; it will be totally ignored by Entity Framework.
How to solve it…
You need to mark all of your properties that make up the primary key with an order number; each will have its own, and you need to use fluent mapping for this...