按特定顺序保存实体

时间:2012-06-07 05:02:22

标签: entity-framework

我正在使用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轮保存结束。

谢谢你们:)

1 个答案:

答案 0 :(得分:4)

数据库或EF都不保证订购。以同样的方式查询数据库时,您不必按预期顺序获取元素。如果您需要精确的顺序,则必须添加其他列以保留记录的排序值,并在检索数据时使用OrderBy扩展方法。

SaveChanges执行的操作顺序完全控制EF。你无法改变它。