(я полагаю, что это та же проблема, что и , эта , но ответа там нет, и я думаю, что я могу лучше выразить эту проблему здесь ...)
У меня есть два класса Linq-to-SQL, State
и County
, где County
имеет FK до State
. Вот некоторый тестовый код:
State s = State.GetState("NY"); // here I do a load of a State class via the Linq DataContext
County c = new County();
c.Name = "Rockland";
c.State = s;
MyDataContext.GetTable<County>().InsertOnSubmit(c);
MyDataContext.SubmitChanges(); // throws an exception
Исключение составляет "Violation of PRIMARY KEY constraint 'PK_State'. Cannot insert duplicate key in object 'dbo.State'"
.
Другими словами, здесь происходит то, что, несмотря на то, что я загрузил s
в качестве существующей записи, когда я пытаюсь вставить c
, Linq предполагает, что все связанные объекты, включая State
, также нужно вставить!
Это совершенно абсурдно, и я не могу поверить, что Microsoft сделала бы такую грубую ошибку - поэтому, должно быть, где-то мое понимание неверно.
Может кто-нибудь объяснить, что я делаю неправильно, и каков здесь правильный подход?
Спасибо!