После создания нового объекта (Foo) я установил ключ (BarId) для свойства ассоциации EntityRef (Bar). Затем я хочу вставить новый объект в базу данных и получить доступ к загруженному потомку дочернему объекту.
К сожалению, свойство отложенной загрузки возвращает нуль после вызова InsertOnSubmit (). Однако он возвращает правильный объект, если я вместо этого прикрепляю () объект к контексту данных.
Вот код, который успешно вставляет мой новый объект в базу данных, но неправильно настраивает отложенную загрузку для дочернего свойства Bar:
var foo = new Foo();
foo.BarId = 123;
context.GetTable<Foo> ().InsertOnSubmit( foo );
foo.Bar.Something(); // throws NullReferenceException
Здесь объект Bar загружен правильно:
var foo = new Foo();
foo.BarId = 123;
context.GetTable<Foo> ().Attach( foo );
foo.Bar.Something(); // method is called on lazy-loaded Bar object
Вызов Attach перед InsertOnSubmit заставляет последнего генерировать исключение «Невозможно добавить сущность, которая уже существует».
Итак, это ошибка в LINQ-to-SQL, когда вставленные объекты неправильно привязаны к контексту данных?
Как мне это исправить?