2016-09-26 6 views
0

Решение для базы данных.Невозможно вставить значение NULL в столбец «Идентификатор» (сначала база данных)

Я использую две таблицы под названием User и Profile. Они оба используют uniqueidentifier (SQL Server) в качестве основного ключа. Я так пусть User автоматически получает свой собственный справ было Ид от:

  1. Откройте свой файл EDMX.

  2. Щелкните правой кнопкой по столбцу Guid для пользователя -> Свойства -> измените StoreGeneratedPattern на Identity.

Работал как очарование. Теперь я попытался сделать то же самое с Review, но я получаю следующую ошибку каждый раз, когда я пытаюсь создать новую строку:

Не удается вставить значение NULL в столбец «Id», таблица «хххх .dbo.Profile '; столбец не допускает нулей. INSERT терпит неудачу. Заявление прекращено.

Если я не использую Identity для StoreGeneratedPattern для Profile, он не генерирует уникальный идентификатор, а не только кучу нулей, которые приводят к дублированным ошибке при попытке создать новую строку снова.

Почему пользователь работает нормально, но не Profile?

Я следил за этим руководством guide для обеих таблиц.

+0

Ваше сообщение об ошибке ссылается на таблицу с именем «Профиль», а не «Профиль». Возможно ли, что вы ошибочно написали/назвали таблицу или класс, на которые он ссылается? –

+1

Вы не можете использовать DatabaseGeneratedOption.Identity для столбцов uniqueidentifier (Guid). В столбцах руководства в СУБД никогда не будет автоинкремент, и поскольку вы изменили StoreGeneratedPattern на Identity, EF не будет передавать его в качестве значения, поскольку он ожидает, что он будет предоставлен СУБД. – DevilSuichiro

+0

, чтобы он работал, измените StoreGeneratedPattern на None и установите допустимые значения Guid или измените тип данных. – DevilSuichiro

ответ

1

Как @Gert Arnold, упомянутый в комментариях, я забыл добавить newsequentialid() для таблицы Profile на SQL Server. Как только я это сделал, я наконец смог создать уникальные Гиды с DatabaseGeneratedOption.Identity.

Вы можете узнать больше об этом методе here. Это также включает методы для Code-First.

Смежные вопросы