#.net #entity-framework
Вопрос:
Мы обрабатываем очень большие транзакции с использованием EF (понимаем, что EF не лучше всего подходит для крупных транзакций), Пытаясь разбить их на более мелкие пакеты, чтобы сэкономить память/повысить производительность и т. Д… Для этого мы пытаемся сохранить элементы, которые имеют родительские отношения…но без сохранения родителя вместе с элементами (затем мы вручную изменим данные в базе данных). Проблема, с которой мы сталкиваемся, заключается в том, что когда мы это делаем, контекст извлекает все дочерние элементы в базе данных. Есть ли способ сообщить контексту, что нам нужны обновления только для только что добавленных элементов? (Мы хотим избежать запроса всей дочерней таблицы.)
public class Child
{
Parent _parent { get; set; } //parent_key is a foreign key in the child table
ComplexType _complexType { get; set; }
}
public class MyContext: DbContext
{
public DbSet<Child> Children { get; set; }
}
public class Example {
public void ShowExample(List<Child> bunchOfChildren)
{
var context = new MyContext();
context.Children.Add(bunchOfChildren);
context.SaveChanges(); //when we just add children (without setting the parent) EF returns EVERY child we've ever saved in the database!!
//...how can we limit it to the children we just added?
}
}
Комментарии:
1. «EF возвращает КАЖДОГО ребенка» Почему вы решили, что он вообще должен возвращать что-либо, если вы просто добавляете новых? И у тебя неправильный синтаксис. Он даже не будет заполнен. Можете ли вы опубликовать реальный код, пожалуйста, если хотите получить некоторую помощь?