Вопрос, на который можно ответить самостоятельно:
Если у вас есть таблица, в которой вы удалили и повторно добавили контент, вы можете получить эту ошибку при вставке новых строк с идентификатором, равным существующим идентификаторам:
Server Error in '/' Application.
A duplicate value cannot be inserted into a unique index. [ Table name = Stories,Constraint name = PK__Stories__000000000000001C ]
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.
Exception Details: System.Data.SqlServerCe.SqlCeException: A duplicate value cannot be inserted into a unique index. [ Table name = Stories,Constraint name = PK__Stories__000000000000001C ]
Source Error:
Line 57:
Line 58: Public Sub Save() Implements IStoryRepository.Save
Line 59: context.SaveChanges()
Line 60: End Sub
SQL Server CE пытается вставить строки с идентификатором (в данном случае storyid), равным существующим строкам.
Решение лежит здесь:
http://msdn.microsoft.com/en-us/library/aa237859(v=sql.80).aspx
Это выглядит так: ALTER TABLE Stories ALTER COLUMN storyid IDENTITY (200, 1)
Это означает, что вы изменяете столбец идентификаторов вашей таблицы (Stories) (в данном случае storyid) и устанавливаете его так, чтобы он начинался с большего числа, чем в настоящее время находятся строки. Например, если моя строка с самым большим идентификатором истории равна 170, я мог бы заполнить ее следующим образом:
ALTER TABLE Stories ALTER COLUMN storyid IDENTITY (171, 1)
Следующая вставка будет иметь идентификатор истории 171, а затем она будет автоматически увеличиваться.
Карл