Creazione di un framework di entity framework chiave composta

In breve, voglio creare chiavi composite sul mio tavolo rimanendo con la chiave primaria per migliorare le prestazioni di ricerca di SQL Server. Il problema di prestazioni si verifica nella tabella di dati 200k ogni volta che cerco un’ quadro senza chiave primaria (cioè una stringa di GUID). Supponiamo che io abbia 3 classi

public class Device{ public int ID { get; set; } public string UDID { get; set; } public string ApplicationKey { get; set; } public string PlatformKey { get; set; } public ICollection DeviceMessages { get; set; } } public class NotificationMessageDevice { [Column(Order = 0), Key, ForeignKey("NotificationMessage")] public int NotificationMessage_ID { get; set; } [Column(Order = 1), Key, ForeignKey("Device")] public int Device_ID { get; set; } public virtual Device Device { get; set; } public virtual NotificationMessage NotificationMessage { get; set; } } public class NotificationMessage { public int ID { get; set; } public string Text { get; set; } public DateTime CreateDate { get; set; } } modelBuilder.Entity().HasKey(t => new { t.ID, t.ApplicationKey, t.PlatformKey, t.UDID }); 

Qual è il problema che ogni volta che voglio rendere ID, UDID, ApplicationKey e PlatformKey definiscono come una chiave composta con modelBuilder dà il seguente errore.

NotificationMessageDevice_Device_Target_NotificationMessageDevice_Device_Source:: il numero di proprietà nei ruoli dipendenti e principali in un vincolo di relazione deve essere identico

Penso che il problema è dovuto al fatto che la proprietà di navigazione su NotificationMessageDevice non è in grado di riconoscere quale sia la chiave primaria sulla tabella Device. Come posso risolvere questo problema? Oltre a questo sarò lieto se condividi le tue esperienze migliorando il rendimento della ricerca su Entity framework. Di solito il problema di prestazioni si verifica ogni volta che utilizzo il primo metodo senza chiavi primarie.