2013-04-05 10 views
1

Попытался изменить мой оператор SQL, чтобы изменить формат создания имен пользователей. Я создаю фиктивные данные для тестирования на веб-странице, поэтому мне просто нужно несколько пользователей. Я хочу изменить имя пользователя, в настоящее время это student{integer}@email.com, и я хотел, чтобы изменить имя student{integer}sqlexception не может вставить повторяющуюся строку ключа

Ошибка

SqlException: Cannot insert duplicate key row in object 'dbo.Users' with unique index 'UX_Users'. The duplicate key value is (1, [email protected]). The statement has been terminated.

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); 
} 

Это где я я получаю ошибку:

dc.SubmitChanges(System.Data.Linq.ConflictMode.FailOnFirstConflict); 

Я использую linqpad, чтобы проверить это.

+0

Как индекс ' 'UX_Users'' определяется? –

ответ

1

Измените код следующим образом:

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(); 
    } 

} 

вам просто нужно разместить представить изменения внутри цикла

С наилучшими пожеланиями

+0

Я все еще получаю ту же ошибку. Я запустил этот оператор, а затем после запуска добавил «string sName ....», а затем попытался снова запустить. Нужно ли мне бросать стол и запускать его? – Masriyah

+0

Возможно, записи уже существуют на вашем столе. Вы используете SQL Server? – BizApps

+0

я мог бы использовать его - я тестировал эту часть в linqpad, но я мог сделать это в управлении SQL Server – Masriyah

Смежные вопросы