У меня есть следующий код, который, как я ожидаю, проверит, существует ли сущность, и, если нет, добавит ее в коллекцию.Затем я призываю отправить изменения в контекст, чтобы сохранить изменения.
int kwID = (int)(from d in this._keywordSource.Source where d.keyword.ToLower() == searchText.ToLower() select d.keywordID).FirstOrDefault();
if ( null == this._context.Rules.Where(e => e.keywordID == kwID && e.searchTerm == item.SearchTerm).FirstOrDefault())
{
this._context.Rules.Add(new Rule() { keywordID = kwID, searchTerm = item.SearchTerm, processed = false });
}
Я проверяю это с помощью 3 ключевых слов / комбинаций searchTerm:
Apple / Apple
iPad /iPad
iPod / iPod
При первой попытке никогда не запускается .Добавить строку кода.Второй делает, успешно.Третий выдает ошибку An entity with the same identity already exists in this EntitySet.
.
Я читал, что это как-то связано с тождеством и семенем, особенно если ваше семя равно 0 в БД.Мой не (установлен в 1).В самом EntitySet содержится ~ 1900 предметов.
Что мне здесь не хватает?
[EDIT] Добавлен код kwID, чтобы показать, что ключевое слово в конечном итоге является kwID в условном выражении.
Первичным ключом этой таблицы является ruleID.Это то, что, по моему мнению, нарушается в сообщении об ошибке ... но я не знаю, как и почему.