簡體   English   中英

實體框架數據庫中的主鍵值不會自動遞增

[英]Primary key value doesn't increment auto in Entity framwork database

我敢肯定我錯過了一些很小的東西,但是我遇到了主要價值自動遞增問題。 我已經創建了兩個簡單的表,並通過使用Entity Framework 5來采用現有數據庫模型的第一種方法。我從控制台程序中簡單地在表中添加值。

我的問題是代碼第一次可以正常運行,但是如果我嘗試通過再次運行整個應用程序來增加更多價值並發現原因,則會崩潰; EF不會自動增加主索引。

CREATE TABLE [dbo].[Book_Titles] (
[Book_ID] INT            NOT NULL,
[Title]   NVARCHAR (150) NOT NULL,
PRIMARY KEY CLUSTERED ([Book_ID] ASC)
);


CREATE TABLE [dbo].[Books_Authors] (
[Author_Id]   INT            NOT NULL,
[Author_Name] NVARCHAR (150) NOT NULL,
[Book_ID]     INT            NULL,
PRIMARY KEY CLUSTERED ([Author_Id] ASC),
FOREIGN KEY ([Book_ID]) REFERENCES [dbo].[Book_Titles] ([Book_ID])
);

控制台程序

namespace Database_First_01
{
class Program
{
    static void Main(string[] args)
    {


        using (var db = new BooksContext())
        {
            var book = new Book_Titles()
            {
                Title ="EF ",
            };

            var author = new Books_Authors()
            {
                Author_Name = "me!",
            };

            book.Books_Authors.Add(author);
            db.Book_Titles.Add(book);
            db.SaveChanges();
        }
    }
}
}

提前謝謝了。

嘗試這個

 CREATE TABLE [dbo].[Book_Titles] (
  [Book_ID] INT   IDENTITY(1,1)   NOT NULL,
  [Title]   NVARCHAR (150) NOT NULL,
  PRIMARY KEY CLUSTERED ([Book_ID] ASC)
);

在列上定義Identity

如果需要,與其他相同。

Microsoft SQL Server使用IDENTITY關鍵字執行自動遞增功能。 和它在您的情況下丟失。

您可以在不同情況下使用IDENTITY屬性

  • 它與CREATE TABLE一起使用
  • 和ALTER TABLE Transact-SQL語句。

因此,如果您已經創建了表(並且它具有數據),則可以按如下所示進行更改。

 ALTER TABLE (yourTable) ADD NewColumn INT IDENTITY(1,1)
 ALTER TABLE (yourTable) DROP COLUMN OldColumnName
 sp_rename 'yourTable.NewColumn', 'OldColumnName', 'COLUMN'

它將您的數據保存在現有表中。

希望對你有幫助

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM