Обычно в моем предыдущем проекте, я могу сделать массовой вставки, передавая список объекта как код нижеМассовая вставка рамки сущность данных 7
public void Create(List<ApplicationUserRole> item)
{
foreach (var data in item)
{
_dbContext.ApplicationUserRole.Add(data);
}
_dbContext.SaveChanges();
}
Но сейчас я продолжаю ударять ошибку
InvalidOperationException : Экземпляр типа объекта «Docdoc.Models.ApplicationUserRole» не может быть отслежен, потому что уже отслеживается другой экземпляр этого типа с тем же ключом. Для новые объекты рассматривают использование генератора IIdentityGenerator для генерации уникальных значений ключа .
мне нужно изменить свой код на ниже, чтобы работать
foreach (var data in item)
{
_dbContext.ApplicationUserRole.Add(data);
_dbContext.SaveChanges();
}
Я знаю, что это очень плохая практика. Производительность будет очень медленной, вставив большой объем данных
Любое решение этой проблемы?
Исключение, которое вы получаете, говорит о том, что вы нарушаете свой ключ для таблицы. Почему бы вам не исправить это первым. Кроме того, что такое большие объемы данных. Как если бы я вызывал ApplicationUserRole ... в моем systsem, возможно, не было бы более 1000 ролей. так много данных, о чем мы говорим здесь ... 1000 ролей, добавленных таким образом, занимают менее 1 секунды. – Seabizkit
Привет, Seabizkit это только один из примеров. Мне все еще нужна дополнительная таблица для вставки. И да, я знаю, это ключевая ошибка. Но какое решение? Пожалуйста, не спрашивайте, почему не Google. У меня был гуглинг в течение нескольких часов и до сих пор нет решения. Спасибо – user998405
эй человек ... здесь, чтобы помочь. решение ... проверьте данные ... найдите место, где эти ApplicationUserRole добавлены в List ... показывая, что код поможет. Также покажите класс для ApplicationUserRole, чтобы я мог видеть, что составляет KEY. Массовые вставки - это другой вопрос, который я чувствую и второстепенен этому. Может быть, вы могли бы задать это как отдельный вопрос. Ключ к его быстрому выполнению ... попробуйте создать контекст на единицу работы (UOW). UOW может быть небольшим ... чем больше контекст становится тем медленнее, что он получает ... просто имейте это в виду. –
Seabizkit