Я использую Entity Framework с сервером MySQL, потому что я хочу снова и снова выполнять приятные и простые запросы LINQ в моей базе данных MySQL.
У меня очень простая проблема, и я расстроен, потому что не могу поверить, что EF совершает такую ужасную ошибку.
Для упрощения у меня есть родительский и дочерний классы, и я хочу выполнить две вставки в одной транзакции.
Для демонстрации: у меня есть A, B, C и D.
A является родителем B, а C, B и C являются родителями D (так и должно быть).
Я делаю следующее:
B b = new B() { B_ID = 1 };
A.Bs.Add(b);
C.Ds.Add(new D() { B_ID = b.B_ID } );
Я делаю это так, потому что все это на самом деле происходит внутри класса C.
Почему я получаю исключение UpdateException (объекты в «...» участвуют в отношениях «BD». Найдено 0 связанных «B». Ожидается 1 «B»)? Потому что, когда я пропускаю последнюю команду (вставка D, потомок B), она работает нормально, а когда я запускаю вставку после нее (т. Е. В новой транзакции), она также отлично работает.
Может ли быть так, что EF слепо вставляет элементы в случайном порядке, но замечает для себя, что этого не может быть? Или я подхожу к проблеме совершенно неправильно?
EF версия: у меня .NET FX 3.5 SP1, так что, насколько я знаю, это версия 1.
Обновление: Очень извините, отследил ошибку до ошибки, которую я сделал, так что теперь ошибка не возникает на уровне EF (за исключением того, что я сказал выше), но на самом деле вставка для элемент chidl отправляется в БД, я вижу это в журнале. Таким образом, проблема все еще сохраняется, но исключение другое (ограничение внешнего ключа не выполняется).
Спасибо за вашу помощь,
Michael
(отредактировано для ответа на комментарии)