Я использую классы POCO с EF Code First.
У меня есть класс Ball как:
public class Ball
{
[Key]
public int BallId { get; set; }
public Box Container { get; set; }
[Required]
public bool IsCounted{get; set;}
}
и коробка класса как:
public class Box
{
[Key]
public int BoxId { get; set; }
[Required]
public string Description { get; set; }
public ICollection<Ball> Balls { get; set; }
}
У меня есть список уже созданных шаров, с помощью которых я хочу создать новый ящик!
Когда коробка создана:
- Каждый шар должен иметь свойство IsCounts true
- Ссылка box.Balls должна указывать на существующие объекты
Мяч. Контейнер должен указывать на новый ящик!
public void CreateBox(string Description, ICollection<Ball> givenBalls)
{
using (var c = new BoxEntryModel())
{
Box entry = new Box();
if (c.Boxes.Count().Equals(0))
entry.BoxId = 1;
else
entry.BoxId = c.Boxes.Max<Box>(b => b.BoxId) + 1;
entry.Description = Description;
entry.Balls = givenBalls;
try
{
foreach (Ball ball in givenBalls)
{
c.Balls.Attach(ball);
ball.IsCounted = true;
ball.Container = entry;
}
c.Boxes.Add(entry);
c.SaveChanges();
}
}
Этот фрагмент кода дает мне исключение:
Оператор хранения, вставки или удаления затронул неожиданное количество строк (0). Объекты могут быть изменены или удалены с момента загрузки объектов. Обновите записи ObjectStateManager.
Описание: во время выполнения текущего веб-запроса произошло необработанное исключение. Пожалуйста, просмотрите трассировку стека для получения дополнительной информации об ошибке и о том, где она возникла в коде.
Сведения об исключении: System.Data.OptimisticConcurrencyException: оператор обновления, вставки или удаления магазина затронул неожиданное количество строк (0). Объекты могут быть изменены или удалены с момента загрузки объектов. Обновите записи ObjectStateManager.
Также, если я прокомментирую строку c.Balls.Attach (расход); код работает, но он создает новые строки для каждого шара, который я пытаюсь добавить в поле.
Пожалуйста, помогите мне сохранить сущности в соответствии с отношениями.
Заранее спасибо.