Столбец 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.