我使用Seed()
类的Configuration.cs
方法在使用Update-Database命令时填充数据库中的数据。
除此之外,我正在创建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
有关?
答案 0 :(得分:0)
如果您依赖数据库进行排序,那么。
关闭自动ID增量并指定您自己的ID
EventCategory(int id,string name)
如果必须使用数据库标识,请尝试使用对象的排序顺序(int)列
EventCategory(字符串名称,int sortOrder)
无论哪种方式,您都无法保证您会将已排序的列表持久保存到数据库中。我不能肯定地说你的用例,但你不应该回复SQL来为你排序对象,但是在查询数据库时使用linq在绑定到视图之前对它们进行排序。
e.g。
var mySortedCategories = dbContext.EventCategories.OrderBy(x => x.Name).ToList();