Спецификация идентичности не работает в Linq - PullRequest
0 голосов
/ 08 ноября 2010

Я пытаюсь использовать linq для вставки строки в таблицу, а столбец идентификатора таблицы имеет идентификационную спецификацию:

CREATE TABLE [dbo].[Event](
    [ID] [int] IDENTITY(36,1) NOT NULL,
    [Description] [nvarchar](100) NOT NULL,
    [OccurredDateTime] [datetime] NULL,
 CONSTRAINT [PK_Event] PRIMARY KEY CLUSTERED 
(
    [ID] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]

У меня есть спецификация идентификации, учтенная в моем файле DBMLв моем проекте Visual Studio:

[Table(Name="dbo.Event")]
public partial class Event : INotifyPropertyChanging, INotifyPropertyChanged
{
  /* ... */
  [Column(Storage="_ID", AutoSync=AutoSync.OnInsert, DbType="Int NOT NULL IDENTITY", IsPrimaryKey=true, IsDbGenerated=true)]
  public int ID
  {
    /* ... */
  }

  /* ... */
}

Что не так?Когда я пытаюсь вставить вот так:

Data.Event myEvent = new Data.Event();

myEvent.Description = summaryText;
db.Events.InsertOnSubmit(myEvent);                    
db.SubmitChanges();

выдается следующее исключение:

SqlException: невозможно вставить значение NULL в столбец 'ID', таблица 'redacted.dbo.Событие';столбец не допускает пустых значений.Вставить не удается.Заявление было прекращено

1 Ответ

0 голосов
/ 08 ноября 2010

Я попробовал эту настройку - работает как брелок для меня.Я могу вставить новый объект Event - никаких проблем - и я сразу же получу новый идентификатор ...

Вы уверены, что ваша база данных и модель синхронизированы?Может быть, таблица действительно не создана с INT IDENTITY ??

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