Добавление данных в таблицу БД с помощью 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/