我正在使用Entitiy Framework并遇到了一个奇怪的问题。 我正在尝试将一个集合保存到数据库中(例如:Collection of Rounds)。 现在,此集合中的每个项目都有一个子元素集合(例如:事件集合)。
看起来像这样:
Round 1
(No Child Elements)
Round 2
Event 1
Event 2
Event 3
Round 3
(No Child Elements)
Round 4
Event 1
Event 2
如上所示,父对象不一定总是有子集合。
现在问题是: 我的要求是我想保存数据,因为我已将其添加到集合中。 但是,虽然保存EF会首先保存具有子集合的项目,因此在保存时会修改订单。 因此,在数据库中,第2轮首先保存,然后其他则随机保存。
有没有办法强制EF按照我构建它的顺序保存Rounds集合? 它应始终从第1轮开始保存,并应以第4轮保存结束。
谢谢你们:)
答案 0 :(得分:4)
数据库或EF都不保证订购。以同样的方式查询数据库时,您不必按预期顺序获取元素。如果您需要精确的顺序,则必须添加其他列以保留记录的排序值,并在检索数据时使用OrderBy
扩展方法。
SaveChanges
执行的操作顺序完全控制EF。你无法改变它。