Если вы предпочитаете аннотации данных, просто примените атрибут ForeignKey к свойству навигации и предоставьте разделенный запятыми список с именем свойства FK
class1{
[key]
public string id1 {get; set;}
[Key]
public string key2 {get; set;}
}
class2{
public string id1 { get; set;}
public string key2 { get; set;}
[ForeignKey("id1,key2")] // <= the composite FK
public virtual class1 class1{ get; set; }
}
Использование свободно конфигурируемого API намного проще для понимания и менее подвержено ошибкам:
modelBuilder.Entity< class2>()
.HasRequired(e => e. class1)
.HasForeignKey(e => new { e.id1, e.key2 });