Проблема здесь в том, что Entity Framework не может вносить изменения в первичный ключ конкретной таблицы. Теперь, если вы не указали первичный ключ для своей таблицы, структура сущностей будет рассматривать все как первичный ключ, и, следовательно, вы не сможете вносить изменения в таблицу. Что вам нужно сделать, это определить первичный ключ в таблице, удалить таблицу из вашей модели из Браузера моделей, а затем повторно добавить таблицу в модель. Это обязательно исправит это. Удачного кодирования. Ура!

у меня есть таблица в базе данных со столбцом, который просто nvarchar (800).

Когда я пытаюсь сделать:

try
{
    UserTable = (from x in entities.userTable where x.uID == uID select x).Single();
    UserTable.DateCreated = DateTime.Now;
    UserTable.text= newText;
    Update(UserTable);
}

Я получаю исключение в улове:"The property 'text' is part of the object's key information and cannot be modified."

Когда я смотрю в таблицу, я не вижу ничего под «ключом» или «индексом». Так что это не ключ, я не понимаю, почему C # дает мне неверную информацию. Ничто в SQL Management Studio ничего не говорит о том, что «текст» является ключом или индексом. Что я делаю?

Ответы на вопрос(4)

Убедитесь, что ключи правильно сопоставлены. Если вы щелкнете правой кнопкой мыши по столбцу, вы можете переключить свойство Entity Key. Если рассматриваемый столбец не помечен как ключ сущности, вы сможете обновить значение.

Шаг 1: Проверьте, есть ли в вашей таблице столбец первичного ключа в базе данных или нет. Если у него нет первичного ключа, добавьте первичный ключ. Потому что, если мы не добавим первичный ключ в таблицу, тогда структура сущностей создаст свою собственную коллекцию ключей и добавит в нее все столбцы.

Шаг 2: Откройте файл .edmx, чтобы увидеть отображение объектов таблицы. Вы сможете увидеть, что каждый столбец таблицы имеет значок, похожий на первичный ключ. Так что пишите, нажмите на свою страницу и обновите .edmx из базы данных.

Шаг 3: Если вы по-прежнему видите одинаковые значки первичного ключа во всех столбцах, нажмите на название столбца, который хотите обновить по одному, и перейдите в окно свойств и установите для свойства Entity Key значение false.

Решение Вопроса

EF использует все поля / столбцы как часть «ключевой информации».

 lukiffer06 янв. 2011 г., 21:54
Если вы щелкнете правой кнопкой мыши на холсте edmx и выберете обновить модель из базы данных, она должна изменить его.
 Dexter06 янв. 2011 г., 21:53
Хм, кажется, Entity Framework не обновляет файл «модель» при обновлении базы данных. Он все еще думал, что «текст» был ключом раньше.
 Rune FS06 янв. 2011 г., 21:55
@Dexter EF не обновляется автоматически. Вам необходимо запросить обновление модели
 Dexter06 янв. 2011 г., 21:43
О, вы правы, uID - это не ключ, я так и думал. Теперь uID является первичным ключом. Тем не менее, он по-прежнему дает то же исключение.
 Rahul14 авг. 2014 г., 12:02
У меня уже есть первичный ключ (то есть комбинация двух внешних ключей, т. Е. Естественный ключ), но я все еще получаю ту же проблему ...

что Entity Framework не может вносить изменения в первичный ключ конкретной таблицы. Теперь, если вы не указали первичный ключ для своей таблицы, структура сущностей будет рассматривать все как первичный ключ, и, следовательно, вы не сможете вносить изменения в таблицу. Что вам нужно сделать, это определить первичный ключ в таблице, удалить таблицу из вашей модели из Браузера моделей, а затем повторно добавить таблицу в модель. Это обязательно исправит это. Удачного кодирования. Ура!

Ваш ответ на вопрос