C# sqlexception无法插入重复的键行

C# sqlexception无法插入重复的键行,c#,sql,C#,Sql,试图更改我的SQL语句以更改创建用户名的格式。我在网页上创建虚拟数据进行测试,所以我只需要多个用户。我想更改当前用户的名称,它是student{integer}@email.com,我想将名称更改为student{integer} 错误 SqlException:无法在具有唯一索引“UX\u Users”的对象“dbo.Users”中插入重复的键行。重复的键值为(1,student0@email.com). 声明已终止 SQL语句 string basestring = "student{0}@

试图更改我的SQL语句以更改创建用户名的格式。我在网页上创建虚拟数据进行测试,所以我只需要多个用户。我想更改当前用户的名称,它是
student{integer}@email.com
,我想将名称更改为
student{integer}

错误

SqlException:无法在具有唯一索引“UX\u Users”的对象“dbo.Users”中插入重复的键行。重复的键值为(1,student0@email.com). 声明已终止

SQL语句

string basestring = "student{0}@email.com";
string userName = "Student{0}";

using (Database dc = new Database())
{
    dc.Connection.Open();
    for (int i = 0; i < 400; i++)
    {
        string email = string.Format(basestring,i);
        string sName = string.Format(userName, i);
        User u = new User(){ Name = sName, UserName = email, InstitutionUniqueID = email, Email = email, CreationDate=DateTime.Now, InstitutionsID=1, GUID= Guid.NewGuid() };
        dc.Users.InsertOnSubmit(u); 
    }
    dc.SubmitChanges(System.Data.Linq.ConflictMode.FailOnFirstConflict);
}

我正在使用linqpad来测试这一点

将代码更改为:

string basestring = "student{0}@email.com";
string userName = "Student{0}";

using (Database dc = new Database())
{

    for (int i = 0; i < 400; i++)
    {
         dc.Connection.Open();
        string email = string.Format(basestring,i);
        string sName = string.Format(userName, i);
        User u = new User(){ Name = sName, UserName = email, InstitutionUniqueID = email, Email = email, CreationDate=DateTime.Now, InstitutionsID=1, GUID= Guid.NewGuid() };
        dc.Users.InsertOnSubmit(u); 
        dc.SubmitChanges(System.Data.Linq.ConflictMode.FailOnFirstConflict);
        dc.Connection.Close();
    }

}
string basestring=“student{0}@email.com”;
字符串userName=“学生{0}”;
使用(Database dc=new Database())
{
对于(int i=0;i<400;i++)
{
dc.Connection.Open();
string email=string.Format(basestring,i);
string sName=string.Format(用户名,i);
用户u=new User(){Name=sName,UserName=email,InstitutionUniqueID=email,email=email,CreationDate=DateTime.Now,institutionid=1,GUID=GUID.NewGuid()};
dc.Users.InsertOnSubmit(u);
dc.SubmitChanges(System.Data.Linq.ConflictMode.FailOnFirstConflict);
dc.Connection.Close();
}
}
您只需要将提交更改放在循环中


致以最诚挚的问候

将您的代码更改为:

string basestring = "student{0}@email.com";
string userName = "Student{0}";

using (Database dc = new Database())
{

    for (int i = 0; i < 400; i++)
    {
         dc.Connection.Open();
        string email = string.Format(basestring,i);
        string sName = string.Format(userName, i);
        User u = new User(){ Name = sName, UserName = email, InstitutionUniqueID = email, Email = email, CreationDate=DateTime.Now, InstitutionsID=1, GUID= Guid.NewGuid() };
        dc.Users.InsertOnSubmit(u); 
        dc.SubmitChanges(System.Data.Linq.ConflictMode.FailOnFirstConflict);
        dc.Connection.Close();
    }

}
string basestring=“student{0}@email.com”;
字符串userName=“学生{0}”;
使用(Database dc=new Database())
{
对于(int i=0;i<400;i++)
{
dc.Connection.Open();
string email=string.Format(basestring,i);
string sName=string.Format(用户名,i);
用户u=new User(){Name=sName,UserName=email,InstitutionUniqueID=email,email=email,CreationDate=DateTime.Now,institutionid=1,GUID=GUID.NewGuid()};
dc.Users.InsertOnSubmit(u);
dc.SubmitChanges(System.Data.Linq.ConflictMode.FailOnFirstConflict);
dc.Connection.Close();
}
}
您只需要将提交更改放在循环中


最好的问候

如何定义
'UX\u用户
索引?如何定义
'UX\u用户
索引?我仍然收到相同的错误。我运行了这个语句,然后在运行之后添加了
字符串sName…
,然后再次尝试运行。我需要删除表并运行它吗?是的,可能记录已经存在于您的表中。您使用的是SQL Server吗?我可以使用它-我在linqpad中测试了这一部分,但我可以在SQL Server管理中执行此操作—只需删除表drop/create中的所有记录。我仍然收到相同的错误。我运行了这个语句,然后在运行之后添加了
字符串sName…
,然后再次尝试运行。我需要删除表并运行它吗?是的,可能记录已经存在于您的表中。您使用的是SQL Server吗?我可以使用它-我在linqpad中测试这一部分,但我可以在SQL Server管理中执行此操作—只需删除表drop/create中的所有记录。