Столбец GUID SQL Server 2008 - все 0 - PullRequest
3 голосов
/ 16 января 2011

Я надеюсь, что это простой бред, который я сделал с моей стороны ...

У меня есть таблица в моей базе данных, настроенная так:создал (через LINQ to SQL), что значения в этом поле отформатированы как GUID, но содержат все 0

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

Спасибо.

Ответы [ 2 ]

7 голосов
/ 16 января 2011

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

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

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

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

alt text

1 голос
/ 16 января 2011

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

...