不久,我想在我的表上創建組合鍵與主鍵,以提高sql server搜索性能。每當我搜索沒有主鍵的實體(即一串GUID)時,性能問題就會出現在200k數據表上。假設我有3類創建複合關鍵實體框架
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<NotificationMessageDevice> 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<Device>().HasKey(t => new { t.ID, t.ApplicationKey, t.PlatformKey, t.UDID });
的問題是什麼,每當我想要的ID,UDID,ApplicationKey和PlatformKey定義爲複合鍵與模型構建器它提供了以下錯誤。
NotificationMessageDevice_Device_Target_NotificationMessageDevice_Device_Source: :在一個 關係約束的依賴和主要角色的屬性數必須相同
我認爲這個問題是因爲NotificationMessageDevice導航性能是無法識別Device表上的主鍵是什麼。我該如何解決這個問題?除此之外,如果您分享改善Entity框架搜索性能的經驗,我會很高興。通常,無論何時使用沒有主鍵的First方法,性能問題都會發生。
我對EF開發並沒有太多的想法,但是你沒有'ForeignKeyAttribute'對錯誤的東西? – 2013-02-14 10:55:46
Nop這是正確:) – kkocabiyik 2013-02-14 10:58:05