我使用Seed()
方法Configuration.cs
類用於在使用Update-Database命令時填充數據庫中的數據。是否IList <>保證C#中添加項的順序
除其他事項外,我創建EventCategory對象列表如下:
private IList<EventCategory> CreateEventCategoriesTestDefinition()
{
eventCategories = new List<EventCategory>();
var eventCategoryRecruitment = new EventCategory("Recruitment");
eventCategories.Add(eventCategoryRecruitment);
var eventCategoryInternship = new EventCategory("Internship");
eventCategories.Add(eventCategoryInternship);
var eventCategoryTrainingPrograms = new EventCategory("Training Programs");
eventCategoryTrainingPrograms.Events
.Add(new Event("Managerial Training Program 2012-2014", eventCategoryTrainingPrograms));
eventCategories.Add(eventCategoryTrainingPrograms);
var eventCategoryEmployee = new EventCategory("Employee & Team Potential");
eventCategories.Add(eventCategoryEmployee);
return eventCategories;
}
的元素添加元素。 eventCategory僅僅是一個私人財產:
private IList<EventCategory> eventCategories;
從Seed()
方法我打電話CreateEventCategoriesTestDefinition()
幾乎一切都很好,但是當我去數據庫查詢數據我已經注意到,在EventCategory表中的數據沒有正確的順序:
正如你可以看到它的圖片Internship
和Training Programs
切換比較於CreateEventCategoriesTestDefinition()
方法添加的順序位置。
有沒有人知道這裏發生了什麼?爲什麼添加順序不被保留?我知道它應該保存在List<>
,但IList<>
不一樣嗎? 或者這可能與EntityFramework
有關?
當保存更改時,EF不保證插入的順序。它會根據它認爲合適的對象圖建立查詢。至於'IList <>',這只是一個接口:實現是維護或不維護的接口......接口不做任何事情 – Jcl
List <>(implementation)保證項目的順序。我認爲這個問題與EF有關。 –
列表保證排序,但數據庫不是因爲表格沒有隱式順序。你需要在你的SELECT語句中應用一個ORDER BY。如果您需要保留插入順序,則必須將其存儲爲像「CreatedAt datetime」或「Position int」這樣的列。然後將這些用於'ORDER BY'。 –