C# 为什么在Windows窗体应用程序中Id(标识)列以-1开头?
这就是我所做的:C# 为什么在Windows窗体应用程序中Id(标识)列以-1开头?,c#,sql-server,database,winforms,datagridview,C#,Sql Server,Database,Winforms,Datagridview,这就是我所做的: 创建了一个winforms项目 添加了具有默认设置的基于服务的数据库 创建一个表并将Id设置为IDENTITY(1,1) 创建了链接到数据库的数据源 将表作为数据gridview拖放到窗体 启动项目我看到的是Id设置为-1 为什么会发生这种情况?您在DataGridView中看到的内容实际上是使用您的数据集生成的。默认情况下,数据集对从数据库生成的标识列使用AutoIncrementSeed和autoincrementstep到-1 要更改此行为,您可以转到数据集设计器,选
- 创建了一个winforms项目
- 添加了具有默认设置的基于服务的数据库
- 创建一个表并将
设置为Id
IDENTITY(1,1)
- 创建了链接到数据库的数据源
- 将表作为数据gridview拖放到窗体
- 启动项目我看到的是
设置为Id
-1
为什么会发生这种情况?您在
DataGridView
中看到的内容实际上是使用您的数据集生成的。默认情况下,数据集对从数据库生成的标识列使用AutoIncrementSeed
和autoincrementstep
到-1
要更改此行为,您可以转到数据集
设计器,选择数据表
的键列,并在属性中,将自动递增种子
和自动递增步骤
设置为1
为什么数据集设计器将AutoIncrementSeed和AutoIncrementStep设置为-1?
它试图解决数据集生成的标识值和数据库生成的标识值之间可能存在的冲突。要重现它试图解决的问题,请执行以下操作:
使用标识列创建一个新的空表(不尝试在其中插入值)
从数据库创建数据集设计器
在DataSet
designer中,选择DataTable
的键列,并将AutoIncrementSeed
设置为0
和autoincrementstep
设置为1
李>
将表格从“数据源”窗口拖到窗体上,然后运行程序
输入2个值并按save,您将获得一个ConstraintException
异常:
列“Id”被约束为唯一。值“1”已存在
现在
实际上,您在DataGridView
中看到的内容是使用数据集生成的。默认情况下,数据集对从数据库生成的标识列使用AutoIncrementSeed
和autoincrementstep
到-1
要更改此行为,您可以转到数据集
设计器,选择数据表
的键列,并在属性中,将自动递增种子
和自动递增步骤
设置为1
为什么数据集设计器将AutoIncrementSeed和AutoIncrementStep设置为-1?
它试图解决数据集生成的标识值和数据库生成的标识值之间可能存在的冲突。要重现它试图解决的问题,请执行以下操作:
使用标识列创建一个新的空表(不尝试在其中插入值)
从数据库创建数据集设计器
在DataSet
designer中,选择DataTable
的键列,并将AutoIncrementSeed
设置为0
和autoincrementstep
设置为1
李>
将表格从“数据源”窗口拖到窗体上,然后运行程序
输入2个值并按save,您将获得一个ConstraintException
异常:
列“Id”被约束为唯一。值“1”已存在
现在
这是从数据库创建数据表时数据集的默认行为。要更改此行为,可以转到数据集
设计器,选择数据表
的键列,并在属性中,将自动递增种子
和自动递增步骤
设置为1
。这是从数据库创建数据表时数据集的默认行为。要更改此行为,可以转到数据集
设计器,选择数据表
的键列,并在属性中,将自动递增种子
和自动递增步骤
设置为1
。