Вставка Linq без первичного ключа - PullRequest
7 голосов
/ 02 декабря 2008

Мне нужно вставить записи в таблицу, у которой нет первичного ключа, используя LINQ to SQL. Стол плохо спроектирован; Я не имею никакого контроля над структурой таблицы. Таблица состоит из нескольких полей varchar, текстового поля и отметки времени. Он используется в качестве контрольного журнала для других организаций.

Каков наилучший способ выполнения вставок? Могу ли я расширить частичный класс Linq для этой таблицы и добавить «поддельный» ключ? Я открыт для любого взлома, как бы он ни был.

Ответы [ 4 ]

11 голосов
/ 02 декабря 2008

LINQ to SQL не предназначен для этой задачи, поэтому не используйте его. Просто деформируйте вставку в хранимую процедуру и добавьте процедуру в модель данных. Если вы не можете этого сделать, напишите обычную функцию с небольшим количеством встроенного SQL.

9 голосов
/ 02 декабря 2008

Откройте ваш файл DBML в конструкторе и дайте ключу сопоставления, независимо от того, есть ли в вашей базе данных он или нет. Это решит вашу проблему. Однако имейте в виду, что вы не можете рассчитывать на использование столбца для идентификации или чего-либо еще, если в базе данных нет подлинного ключа.

3 голосов
/ 15 декабря 2010

Мне удалось обойти это, используя составной ключ.

У меня была похожая проблема с таблицей, содержащей только два столбца: имя пользователя, роль. Эта таблица, очевидно, не требует столбца идентификаторов. Итак, я создал составной ключ с именем пользователя и ролью. Это позволило мне использовать LINQ для добавления и удаления записей.

2 голосов
/ 02 декабря 2008

Вы можете использовать метод DataContext.ExecuteCommand для запуска собственного пользовательского оператора вставки.

Или, вы можете добавить первичный ключ к столбцу, это позволит отслеживать объекты для вставки / обновления / удаления по текстовому тексту данных. Это будет работать, даже если столбец на самом деле не является принудительным первичным ключом в базе данных (как будет знать linq?). Если вы выполняете только вставки и никогда не используете значение первичного ключа в одном и том же текстовом тексте, все будет в порядке.

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