LINQ to SQl обновляет поле первичного ключа?
У меня есть таблица / класс linq to sql, которая использует GUID как первичный ключ, так и в качестве внешнего ключа. Эта проблема возникла при факторинге некоторого кода, который ранее работал.
Создано исключение
"Операция недействительна из-за текущего состояния объекта".
Процесс, который я использую, таков:
aspnet_User user() = new aspnet_User();
aspnet_user.childTable = new childTable();
.. set some properties
user.Insert() -> my custom method
... @ мой собственный метод
using (mycontext dc = new context() )
{
user.childTable.ID = (Guid)myNewlyCreatedGuid;
}
Исключение происходит в присваивании childTable.set_UserId().
2 ответа
Пока ваша модель правильно определяет отношение внешнего ключа между пользователем и дочерней таблицей, вам не нужно вручную устанавливать первичный ключ для дочерней таблицы. Я объясняю причину почему в принятом ответе на этот вопрос.
Он показывает, как это сделать, используя новую сущность:
http://aspnetking.blogspot.com/2009/03/foreign-key-issue-for-update-in-linq.html
Очистка справочного примера: