Search code examples
entity-frameworkentity-framework-coreentity-framework-4.1code-first

in entity framework code first, how to use KeyAttribute on multiple columns


I'm creating a POCO model to use with entity framework code first CTP5. I'm using the <key()> decoration to make a property map to a PK column. But how can I define a PK on more then one column, and specifically, how can I control order of the columns in the index? Is it a result of the order of properties in the class?

Edit: look at @kara's answer for an updated solution.

Thanks!


Solution

  • NOTE: As of 2019 this answer became non-valid for later EntityFramework versions.

    You can specify the column order in the attributes, for instance:

    public class MyEntity
    {
        [Key, Column(Order=0)]
        public int MyFirstKeyProperty { get; set; }
    
        [Key, Column(Order=1)]
        public int MySecondKeyProperty { get; set; }
    
        [Key, Column(Order=2)]
        public string MyThirdKeyProperty { get; set; }
    
        // other properties
    }
    

    If you are using the Find method of a DbSet you must take this order for the key parameters into account.