Ошибка «Столбец первичного ключа типа« DateTime »не может быть создан сервером». - PullRequest
2 голосов
/ 10 июля 2010

У меня есть составной первичный ключ (Int и DateTime) в одной из моих таблиц. Когда я пытаюсь добавить новую запись, используя LINQ (с полем DateTime, установленным в «AutoGeneratedValue = true», и getdate () в качестве значения по умолчанию на сервере), я получаю следующие ошибки:

Столбец первичного ключа типа «DateTime» не может быть создан сервером.

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

Кроме того, ручная фиксация строки через SQL Server Management Studio работает нормально и корректно автоматически генерирует значение datetime.

Редактировать - все заработало - Должна быть ошибка в LINQ to SQL : я заработал, если установил «IsPrimaryKey» для DateTime в false в DBML, сохраняя составной ключ в базе данных сторона.

Так что это работает:

  • SQL Server: составной первичный ключ (Id INT, MyDate DATETIME - AUTOGENERATED)
  • DBML: пометить только Id в качестве первичного ключа. Пометить MyDate как автоматически созданную, но , а не как первичный ключ.

Я думаю, что это ошибка в LINQ to SQL.

1 Ответ

1 голос
/ 10 июля 2010

Вам необходимо установить значение по умолчанию для поля в SQL Server для самостоятельной генерации.Для полей DateTime это обычно GETDATE().

Редактировать:

Помимо AutoGeneratedValue = true вам также необходимо установить Auto-Sync в OnInsert.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...