Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
尝试在visual studio中使用asp.net和c#将用户添加到数据库时出错_C#_Sql_Asp.net_Visual Studio - Fatal编程技术网

尝试在visual studio中使用asp.net和c#将用户添加到数据库时出错

尝试在visual studio中使用asp.net和c#将用户添加到数据库时出错,c#,sql,asp.net,visual-studio,C#,Sql,Asp.net,Visual Studio,比如当我添加名字、姓氏、用户名和密码时。由于某些原因,我无法让它允许我添加条目,例如用户ID,比如1、2、3等等,以及其他信息 相反,当我尝试注册另一个人或在GridView1中输入另一个条目时,会出现此错误: 中发生类型为“System.Data.SqlClient.SqlException”的异常 System.Data.Linq.dll,但未在用户代码中处理。附加的 信息:违反主键约束 “PK_uuu用户_uuu1788CC4C1B5B052D”。无法插入重复的密钥 我可能解释不清

比如当我添加名字、姓氏、用户名和密码时。由于某些原因,我无法让它允许我添加条目,例如用户ID,比如1、2、3等等,以及其他信息

相反,当我尝试注册另一个人或在GridView1中输入另一个条目时,会出现此错误:

中发生类型为“System.Data.SqlClient.SqlException”的异常 System.Data.Linq.dll,但未在用户代码中处理。附加的 信息:违反主键约束 “PK_uuu用户_uuu1788CC4C1B5B052D”。无法插入重复的密钥

我可能解释不清楚。原谅我


看来您的密钥不是自动填充的。 这将导致一个大问题,因为主键不能为null

在图片“用户表”中的创建表TSQL中 将行更改为:

[UserID] INT NOT NULL 

这会解决你的问题


Caz

您得到的错误是因为您的
用户
表的主键列未设置为标识列。您没有根据C#代码设置此列的值,但默认值为零。很可能您成功插入了一条记录,因此插入了主键为零的记录。现在,您正试图插入更多行,而另一个0将进入,因此它将抛出该异常

修复

确保您的
用户
表的主键设置为标识列,以便它自动递增。如果不希望它自动标识并递增,则需要传入值,但必须确保它是唯一的,否则会出现相同的错误。我只想将其设为标识。

1)设为列标识:转到列属性并设置标识规范和Is标识:设为是并按值1递增

或通过:

UserID INT IDENTITY(1,1) PRIMARY KEY
2) 检查Item类中的ID属性,确保其具有如下属性:

[Column(Storage="_ID", AutoSync=AutoSync.OnInsert,
    DbType="INT NOT NULL IDENTITY", IsPrimaryKey=true, IsDbGenerated=true)]
Look at the IsDbGenerated=true, it is the important guy here.
在Sql Server上调整标识之前,您可能使用设计器创建了DatabaseContext,因此只需重新生成此类(通过在设计器中删除表并再次从服务器资源管理器中删除它)

在LINQ to SQL设计器中,需要确保列设置为:

Auto Generated Value = TRUE
Auto-Sync = ON INSERT

希望这会有所帮助:)

如果您的id列是identity列,则不需要插入其值,sql将自动插入。或者显示您的表定义您是如何创建
User
表的?我们能看到吗code@CodingYoshi我刚刚添加了用户表。@Preet我想添加更多用户,但由于某些原因我无法添加。我认为您也需要输入id值,首先检查最后一个id值,然后添加id值递增的行。尝试此操作后,出现以下错误:违反主键约束“PK_uuser_uuu1788cc4c1b5b052d”。无法在对象“dbo.User”中插入重复的密钥。重复的键值为(0)。该语句已终止。请尝试完全清除该表,然后重试,其中可能有一些混乱的数据。或者您可以只写UserID INT-IDENTITY(20,1)将在20时启动PK的主键未1I我清除了表数据,并通过尝试添加任何条目获得此信息:System.data.SqlClient.SqlException类型的异常发生在System.data.Linq.dll中,但未在用户代码中处理其他信息:当IDENTITY\u INSERT被设置为OFF。这意味着在某个地方,您正在为用户模型设置一个值。在您的代码中,它是否在任何地方说UserID=可能是这样的:var deleteQuery=来自myDB中的a.UserID==int.Parse(TextBox1.Text)的用户选择a;如何将其设置为标识列?我认为在您的表中已经存在id值为0的行。您需要将其删除或更新,因为id将从值1开始。然后UserID INT IDENTITY(1,1)主键这也将起作用我将IDENTITY specification设置为true,identity为true,identity increment为1,identity seed为1,出现以下错误:System.Data.SqlClient.SqlException类型的异常出现在System.Data.Linq.dll中,但未在用户代码中处理其他信息:当identity\u insert设置为OFF时,无法在表“user”中为identity列插入显式值。是吗现在工作吗?是,现在您不能在其中输入id值。只需输入名字等id将自动增加。同时删除第一行谢谢。我也学到了很多。我不能撒谎,我曾一度认为这件事不容易做到,没问题。我认为在公司或大学的真实场景中,你不会想要复制品。
Auto Generated Value = TRUE
Auto-Sync = ON INSERT