Невозможно присоединить сущность, которая уже существует - PullRequest
3 голосов
/ 17 января 2012

Для следующего кода, получающего сообщение:

Невозможно присоединить сущность, которая уже существует.

Код C #:

var con = (from c in cmsContentTable where c.ContentName == contentId select c).FirstOrDefault();
cmsContentTable.Attach(con);
con.ContentData = "New Value";
cmsContentTable.Context.SubmitChanges(); 

Почему он выдает эту ошибку - Это потому, что ссылка на con уже была сделана, когда

var con = (from c in cmsContentTable where c.ContentName == contentId select c).FirstOrDefault();

?

1 Ответ

4 голосов
/ 17 января 2012

Поскольку вы уже получаете элемент из таблицы:

var con = (from c in cmsContentTable where c.ContentName == contentId select    c).FirstOrDefault();

Контекст уже «привязан» к объекту.Это верно всякий раз, когда вы извлекаете уже существующий объект из таблицы.

Если вы удалите строку:

cmsContentTable.Attach(con);

С вами все будет в порядке.

Более полезное сообщениебудет «Невозможно присоединиться к объекту, который уже подключен к контексту», поскольку это именно то, что происходит на самом деле.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...