自动增量列.NET

时间:2016-05-26 17:37:08

标签: c# .net entity-framework auto-increment

我有一个C#.NET Web应用程序,我想在id上创建一个自动增量。我无法弄清楚我做错了什么,但我不断收到错误,因为它没有增加。

错误:

  

无法将值NULL插入列' Id',table' Samen de Zorg.dbo.BulletinItem&#39 ;;列不允许空值。 INSERT失败。
  声明已经终止。

控制器:

    [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])
);

1 个答案:

答案 0 :(得分:1)

你需要在SQL中使用你的模型不仅要说NOT-NULL而且要在AUTO_INCREMENT之间添加一个空格。