Столбец GUID SQL Server 2008 - все 0

Я надеюсь, что это просто глупость, которую я сделал на моем конце...

У меня есть таблица в моей базе данных, настроенная так:

имя столбца: widget_guid
тип данных: уникальный идентификатор
разрешить нули: ложь
значение по умолчанию: newid()
личность: ложь
строка guid: правда

Когда создаются записи (через LINQ to SQL), значения в этом поле форматируются как GUID, но содержат все 0

Я предполагал, что при создании новой записи для этого столбца будет автоматически создан guid, очень похожий на автоматически увеличивающийся идентификатор строки. Разве это не правда? Любая помощь будет принята с благодарностью.

Благодарю.

2 ответа

Решение

Вам нужно проверить свои свойства в столбце GUID - вам нужно убедиться, что:

  • Auto Generated Values установлен в True (так что вы в основном говорите Linq-to-SQL, что база данных будет генерировать значение)

  • Auto-Sync должен быть установлен в OnInsert так что ваш объект C# будет заполнен новым значением после того, как вы вызвали context.SubmitChanges()

С этими двумя настройками вы должны получить ожидаемое поведение: нет необходимости устанавливать GUID на стороне клиента, база данных сгенерирует новое значение и вставит его, и вы получите его обратно сразу после вызова .SubmitChanges()

альтернативный текст

В вашем dbml файле установите для поля значение nullable. Если он установлен как not-nullable, LINQ не идет так далеко, как проверка того, что поле имеет значение по умолчанию; он просто считает поле ненулевым и отправит Guid.Empty, вызывающий 0.

Другие вопросы по тегам