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