Как вставить данные в таблицу SQL с помощью Linq, не устанавливая первичный ключ в таблице - PullRequest
1 голос
/ 26 июля 2010

У меня есть таблица, в которой я не хочу указывать какой-либо первичный ключ, после этого я вставляю в него записи, используя Linq ... аааа ... это выдает ошибку "Не удается выполнить создание, обновление илиОперации удаления в «Таблице (abc)», так как у нее нет первичного ключа «

, могут в любой момент сказать мне, как вставить запись без установки ее первичного ключа.Кстати, я не устанавливаю первичный ключ, потому что в этой таблице будет храниться большой объем данных.

Ответы [ 2 ]

1 голос
/ 02 августа 2010

Вы не можете использовать Linq-to-SQL напрямую с таблицами, у которых нет первичных ключей, потому что это не поддерживается.

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

Вероятно, заметного снижения производительности не произойдет.поле первичного ключа идентификатора в любом случае.

0 голосов
/ 26 июля 2010

Тами - не будет ли хорошей идеей придерживаться «лучших практик» при использовании linq и добавлять первичный ключ автонумерации, даже если он не будет использоваться, кроме как для вставок или обновлений ?? я могу вспомнить много случаев, когда казалось бы, что «необязательное требование» к первичному ключу позже приводит к проблемам при попытке обновления на другие платформы и т. д.

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

джим

[править] Тами, я буду честна с тобой. вам, возможно, придется изучить соглашения, чтобы наилучшим образом удовлетворить любой ответ на этот вопрос. в основном, хотя «вам не« нужен »индекс для ваших записей, поскольку он не редактируется и не удаляется, соглашение с linq основано на предположении о целостности данных. по сути, linq (и многие другие программные инструменты) требуют соглашения, которое позволяет им кратко идентифицировать уникальный ключ для каждого объекта, который они вводят в область видимости. не определяя это, вы игнорируете это соглашение, и поэтому linq отмечает это для вас. Единственный способ FWD - плыть по течению. даже если вы «чувствуете», что индекс избыточен, linq требует от него доступа к полной функциональности, встроенной в него.

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