我确定我错过了一些非常小的东西但是我遇到了主要值自动增量的问题。我创建了两个简单的表,并且我已经采用了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();
}
}
}
}
提前多多感谢。
答案 0 :(得分:5)
试试这个
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
如果你愿意,可以和其他人一样。
答案 1 :(得分:0)
Microsoft SQL Server使用IDENTITY
关键字执行自动增量功能。在你的情况下它不存在。
您可以在不同情况下使用IDENTITY
属性
所以,如果您已经创建了表(并且它有数据),您可能会像以下一样进行更改。
ALTER TABLE (yourTable) ADD NewColumn INT IDENTITY(1,1)
ALTER TABLE (yourTable) DROP COLUMN OldColumnName
sp_rename 'yourTable.NewColumn', 'OldColumnName', 'COLUMN'
它会将您的数据保存在现有表格中。
希望它会有所帮助