Добавление данных в таблицу БД с помощью Linq to Entities (EDMX), если у таблицы нет первичного ключа?

Я пытаюсь добавить данные в таблицу, и linq для объектов создает исключение с помощью:

Невозможно обновить EntitySet 'XXXX', так как он имеет DefiningQuery, и в элементе нет элемента для поддержки текущей операции.

В таблице, в которой я пытаюсь добавить данные, нет первичного ключа, и если я добавлю столбец int и установлю его в качестве первичного ключа, проблема исчезнет, ​​но в смысле purist/OCD этот столбец не нужен

UserTable      UserGroup               GroupTable
ID Name        UserId GroupId          ID Name 

Требуется ли для добавления данных в таблицу БД с помощью Linq to Entities (EDMX) первичный ключ таблицы?

1 ответ

Решение

Вы можете вручную редактировать сгенерированный .edmx файл, найдите строки ошибок и исправьте их. Оказывается, что EF действительно нужен первичный ключ для каждой таблицы (который не является отношением "многие ко многим").

Подробнее о таблицах без первичных ключей и о том, почему это считается неправильным для EF: http://www.i-think22.net/archives/2009/07/24/linq-to-sql-and-tables-with-no-primary-key/

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