กรอบเอนทิตี - ดัชนี
ดัชนีคือโครงสร้างข้อมูลบนดิสก์ที่ยึดตามตารางและมุมมอง ดัชนีทำให้การดึงข้อมูลเร็วขึ้นและมีประสิทธิภาพในกรณีส่วนใหญ่ อย่างไรก็ตามการใส่ตารางหรือมุมมองที่มีดัชนีมากเกินไปอาจส่งผลต่อประสิทธิภาพของการดำเนินการอื่น ๆ เช่นการแทรกหรือการอัปเดต
การจัดทำดัชนีเป็นคุณลักษณะใหม่ในกรอบงานเอนทิตีที่คุณสามารถปรับปรุงประสิทธิภาพของแอปพลิเคชัน Code First ของคุณได้โดยลดเวลาที่ต้องใช้ในการสืบค้นข้อมูลจากฐานข้อมูล
คุณสามารถเพิ่มดัชนีในฐานข้อมูลของคุณโดยใช้ไฟล์ Index แอตทริบิวต์และแทนที่ค่าเริ่มต้น Unique และ Clustered การตั้งค่าเพื่อให้ได้ดัชนีที่เหมาะสมที่สุดกับสถานการณ์ของคุณ
มาดูโค้ดต่อไปนี้ซึ่งมีการเพิ่มแอตทริบิวต์ Index ในคลาส Course สำหรับ CourseID
public partial class Course {
public Course() {
this.Enrollments = new HashSet<Enrollment>();
}
[Index]
public int CourseID { get; set; }
public string Title { get; set; }
public int Credits { get; set; }
public byte[] VersionNo { get; set; }
public virtual ICollection<Enrollment> Enrollments { get; set; }
}
คีย์ที่สร้างข้างต้นไม่ซ้ำกันไม่ใช่คลัสเตอร์ มีโอเวอร์โหลดที่สามารถลบล้างค่าเริ่มต้นเหล่านี้ได้ -
ในการสร้างดัชนีให้เป็นดัชนีแบบคลัสเตอร์คุณต้องระบุ IsClustered = true
ในทำนองเดียวกันคุณสามารถทำให้ดัชนีเป็นดัชนีเฉพาะได้โดยระบุ IsUnique = true
ลองดูรหัส C # ต่อไปนี้ที่ดัชนีเป็นคลัสเตอร์และไม่ซ้ำกัน
public partial class Course {
public Course() {
this.Enrollments = new HashSet<Enrollment>();
}
[Index(IsClustered = true, IsUnique = true)]
public int CourseID { get; set; }
public string Title { get; set; }
public int Credits { get; set; }
public byte[] VersionNo { get; set; }
public virtual ICollection<Enrollment> Enrollments { get; set; }
}
สามารถใช้แอตทริบิวต์ดัชนีเพื่อสร้างดัชนีเฉพาะในฐานข้อมูล อย่างไรก็ตามนี่ไม่ได้หมายความว่า EF จะสามารถให้เหตุผลเกี่ยวกับความเป็นเอกลักษณ์ของคอลัมน์ได้เมื่อจัดการกับความสัมพันธ์ ฯลฯ โดยปกติแล้วคุณลักษณะนี้จะเรียกว่าการสนับสนุนสำหรับ“ ข้อ จำกัด เฉพาะ”