2016-05-26 3 views
0

У меня есть веб-приложение C# .NET, и я хочу создать автоматическое увеличение на id. Я не могу понять, что я делаю неправильно, но я продолжаю получать ошибки, потому что он не увеличивается.Auto increment column .NET

Ошибка:

Cannot insert the value NULL into column 'Id', table 'Samen de Zorg.dbo.BulletinItem'; column does not allow nulls. INSERT fails.
The statement has been terminated.

Контроллер:

[HttpPost] 
    [ValidateAntiForgeryToken] 
    public ActionResult Create([Bind(Include = "UserID,Title,Description")] BulletinItem bulletinItem) 
    { 
     // 
     if (ModelState.IsValid) 
     { 
      db.BulletinItem.Add(bulletinItem); 
      db.SaveChanges(); 
      return RedirectToAction("Index"); 
     } 

     return View(bulletinItem); 
    } 

Модель:

[Key] 
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)] 
    public int Id { get; set; } 
    public string UserID { get; set; } 
    public string Title { get; set; } 
    public string Description { get; set; } 

    [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")] 
    public virtual ICollection<BulletinReaction> BulletinReaction { get; set; } 

модели в XML:

 <EntityType Name="BulletinItem"> 
      <Key> 
      <PropertyRef Name="Id" /> 
      </Key> 
      <Property Name="Id" Type="int" Nullable="false" StoreGeneratedPattern="Identity" /> 
      <Property Name="UserID" Type="nvarchar" MaxLength="256" Nullable="false" /> 
      <Property Name="Title" Type="nvarchar" MaxLength="50" Nullable="false" /> 
      <Property Name="Description" Type="nvarchar(max)" Nullable="false" /> 
     </EntityType> 

модель в SQL:

CREATE TABLE [dbo].[BulletinItem] 
(
    [Id]   INT   NOT NULL, 
    [UserID]  NVARCHAR (256) NOT NULL, 
    [Title]  NVARCHAR (50) NOT NULL, 
    [Description] NVARCHAR (MAX) NOT NULL, 

    CONSTRAINT [PK_BulletinItem] 
     PRIMARY KEY CLUSTERED ([Id] ASC), 

    CONSTRAINT [FK_BulletinItem_AspNetUsers] 
     FOREIGN KEY ([UserID]) REFERENCES [dbo].[AspNetUsers] ([UserName]) 
); 
+5

Как выглядит столбец в SQL? Имеет ли он спецификацию идентификации? – jrummell

+0

Что вы используете для создания своего db? Код Первый EF? –

+0

@jrummell Я добавил модель sql по вашему запросу –

ответ

1

Вы должны выбрать модель SQL, чтобы не только говорить NOT-NULL, но и AUTO_INCREMENT просто добавить пробел между ними.

+1

На самом деле, в ** SQL Server **, это 'IDENTITY (1,1)' - не 'AUTO_INCREMENT' .... –