无法通过SQL Server Express Management Studio设置自增?

8

我刚刚尝试向数据库中插入值,它成功了。现在我再次插入相同的值,但是出现了主键重复的错误。

我无法找到任何选项将其更改为自动递增。

我正在通过Linq-To-Sql更新表格。

User u = new User(email.Text, HttpContext.Current.Request.UserHostAddress,
                                        CalculateMD5Hash(password.Text));
db.Users.InsertOnSubmit(g);
db.SubmitChanges();

我第一次没有填写user_id也能正常工作,但后来它变成了0。当我尝试添加第二个用户时,它又想把ID设置为0。

如果你知道自动递增,那么查询数据库并请求最高ID就太过分了。

我该如何打开自动递增呢?我只找到了用于表创建的脚本,而我想保留现有表并进行简单的编辑。

4个回答

20

你的 Linq-to-SQL 模型是如何定义的?检查 user_id 列的属性 - 它们被设置为什么?

alt text

在你的Linq-to-SQL模型中,确保Auto Generated Value设置为true,Auto-Sync设置为OnInsert,服务器数据类型也应与你的设置相匹配(INT IDENTITY)。

在SQL Server Management Studio中,你需要将user_id列定义为INT IDENTITY类型 - 在可视化表设计器中,你需要在这里设置此属性:

alt text


1

这是因为您的主键列类型为整数,所以它的值为零。要使用自动递增,请将表的标识列设置为ID(在表属性中选择)。


0

0

如果您无法更改属性/表字段描述,您可以手动递增user_id并将其传递给插入函数。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接