Порядок вставки / обновления и удаления производится в Entity Framework, зависит от многих вещей в Entity Framework.
Например, если вы вставляете новый продукт в новую категорию, мы должны добавить категорию перед продуктом.
Это означает, что если у вас большой набор изменений, существуют ограничения локального порядка, которые мы должны сначала выполнить, и именно это мы и делаем.
Порядок действий в контексте может противоречить этим правилам. Например, если вы делаете это:
ctx.AddToProducts(
new Product{
Name = "Bovril",
Category = new Category {Name = "Food"}
}
);
Эффект заключается в том, что Продукт сначала добавляется (в контекст), а затем, когда мы идем по графику, мы также добавляем Категорию.
т.е. порядок вставки в контекст:
Product
Category
но из-за ограничений ссылочной целостности мы должны изменить порядок следующим образом, прежде чем пытаться вставить в базу данных:
Category
Product
Так что этот вид местного переупорядочения не подлежит обсуждению.
Однако, если таких локальных зависимостей нет, вы можете теоретически сохранить порядок. К сожалению, в настоящее время мы не отслеживаем «когда» что-то было добавлено в контекст, и по соображениям эффективности мы не отслеживаем объекты в структурах, сохраняющих порядок, таких как списки. В результате в настоящее время мы не можем сохранить порядок несвязанных вставок.
Тем не менее, мы обсуждали это совсем недавно, поэтому мне интересно узнать, насколько это важно для вас?
Надеюсь, это поможет
Alex
Руководитель программы Entity Framework Team