Установка IsPrimaryKey = true для столбца в таблице без первичного ключа - PullRequest
0 голосов
/ 14 октября 2010

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

Взяв верхний ответ, я добавил атрибут IsPrimaryKey в соответствующий столбец, и приложение работало, хотя я не изменил саму таблицу db (т. Е. Первичный ключ по-прежнему отсутствует).

Я ожидаю, что это будет хорошо для моих текущих намерений, но есть ли побочные эффекты, которые могут возникнуть из-за того, что таблица без первичного ключа рассматривается как имеющаяся у объекта LINQ?

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

Ответы [ 2 ]

3 голосов
/ 14 октября 2010

При использовании платформы ORM вы можете имитировать ключи и внешние ключи на уровне ORM, таким образом «скрывая и переопределяя» определенные в базе данных.

Тем не менее, это практика, которую я бы не рекомендовал.Даже если модель важнее самой базы данных, логическая структура всегда должна совпадать.Это нормально делать то, что вы делали, если вы вынуждены работать с устаревшей базой данных и у вас нет возможности это исправить (например, добавить PK на стол).Но старайся идти по праведному пути каждый раз, когда сможешь:)

Таблицы без ПК = Чистое Зло.

2 голосов
/ 14 октября 2010

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

...