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

Очистка справочного примера:

http://dotnetslackers.com/Community/blogs/bmains/archive/2009/05/21/linq-to-sql-error-foreignkeyreferencealreadyhasvalueexception.aspx

Другие вопросы по тегам