Импорт JSON в SQL - ошибка IDENTITY_INSERT is set to OFF

281
19 марта 2017, 02:55

Есть, модель

public class Categories
    {
        [Key]
        [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
        public int CategoriesId { get; set; }
        public int? BravoId { get; set; }
        public string Name { get; set; }
        public int? parent_id { get; set; }
    }

Контролер

[HttpPost]
        [ValidateAntiForgeryToken]
        public async Task<IActionResult> Index(Categories category)
        {
            string str;
            using (HttpClient http = new HttpClient())
            {
                str = http.GetStringAsync("https://......./export/v2/?format=json&city=msk").Result;
            }
            JObject jObject = JObject.Parse(str);
            var allUid = jObject["catalog"]["categories"].Select(n => n.ToString()).ToList();
            foreach (var catg in allUid)
            {
                JObject jObject2 = JObject.Parse(catg);
                var id2 = jObject2["id"].ToString();
                category.BravoId = Convert.ToInt32(id2);
                category.Name = jObject2["name"].ToString();
                if (jObject2["parent_id"] == null)
                {
                    category.parent_id = null;
                }
                else
                {
                    var parent_id2 = jObject2["parent_id"].ToString();
                    category.parent_id = Convert.ToInt32(parent_id2);
                }
                _context.Add(category);
                await _context.SaveChangesAsync();
            }
            return RedirectToAction("Index");
        }

Добавляется одна запись, а потом появляется ошибка:

Cannot insert explicit value for identity column in table 'Categories' when IDENTITY_INSERT is set to OFF.

Не могу понять, где ошибка.

Answer 1

Нашел ошибку, не создавал внутри циклы новую запись.

category = new Categories();

Поэтому EF и пыталось каждый раз вставить один и тот же ID. Рабочий Контроллер выглядит так:

[HttpPost]
        [ValidateAntiForgeryToken]
        public async Task<IActionResult> Index(Categories category)
        {
            string str;
            using (HttpClient http = new HttpClient())
            {
                str = http.GetStringAsync("https://......./export/v2/?format=json&city=msk").Result;
            }
            JObject jObject = JObject.Parse(str);
            var allUid = jObject["catalog"]["categories"].Select(n => n.ToString()).ToList();
            foreach (var catg in allUid)
            {
                category = new Categories();
                JObject jObject2 = JObject.Parse(catg);
                var id2 = jObject2["id"].ToString();
                category.BravoId = Convert.ToInt32(id2);
                category.Name = jObject2["name"].ToString();
                if (jObject2["parent_id"] == null)
                {
                    category.parent_id = null;
                }
                else
                {
                    var parent_id2 = jObject2["parent_id"].ToString();
                    category.parent_id = Convert.ToInt32(parent_id2);
                }
                _context.Add(category);
                await _context.SaveChangesAsync();
            }
            return RedirectToAction("Index");
        }
READ ALSO
C sharp wpf как правильно собрать проект?

C sharp wpf как правильно собрать проект?

Помогите! Не могу собрать проектДелаю релиз - у меня запускается, на 4 других машинах либо ошибка(на одной машине), либо совсем ничего

292
Отображение формата Decimal в целом виде asp.net mvc

Отображение формата Decimal в целом виде asp.net mvc

Такой вопрос, у меня есть БД и цена хранится в decimal

243
Почему не выводит ошибку регистрации php

Почему не выводит ошибку регистрации php

Не пишет ошибку что логин занят и что поля пустые, всегда пишет что успешно зарегистрированыВ базу заносит если верно данные вести

329
Как реализовать условия в шорткоде в зависимости от страниц сайта на wordpress?

Как реализовать условия в шорткоде в зависимости от страниц сайта на wordpress?

Есть сайт на wordpress на страницах которого через шорткод хочу выводить портфолио для каждой со своими особенностямиВ functions

250