Как устранить ошибку «Элемент с тем же ключом уже был добавлен» - PullRequest
0 голосов
/ 01 марта 2020

Здравствуйте, я делаю работу для школы, и я использовал asp. net mvc, чтобы создать страницу и установить соединение с базой данных. Но когда я вставляю ошибку "Элемент с тем же ключом уже был добавлен". Я проверил свои таблицы и процедуры, и переменная «ID» увеличивается. И если вставить в базу данных нет ошибки. Кто-нибудь, кто может мне помочь? Спасибо всем, кто потратил свое время, помогая мне. Спасибо.

Класс TransController, метод, выполняемый после нажатия кнопки Создать на веб-странице

 [HttpPost]
    [ValidateAntiForgeryToken]
    public ActionResult Create([Bind(Include = "ID,Titulo,Data,Imagem,Descricao,Tipo")] Transmontanos TM)
    {

        if (ModelState.IsValid)
        {
            if (Request.Files != null && Request.Files[0] != null)
            {
                var fileName = Request.Files[0].FileName;
                var path = Path.Combine(Server.MapPath("~/Images/"), fileName);
                Request.Files[0].SaveAs(path);

                var ms = new MemoryStream();
                var img = Image.FromFile(path);
                img.Save(ms, System.Drawing.Imaging.ImageFormat.Png);

                TM.Imagem = ms.ToArray();
            }

            Services.AddObject(TM);

            return RedirectToAction("Index");
        }

        return View(TM);
    }

Службы классов

 public static void AddObject(Transmontanos TM)
    {
        using (var db = new TransmontanosEntities())
        {
           var result= db.GetType(TM.Tipo).FirstOrDefault();

            db.Add_object(TM.Titulo, TM.Data, TM.Imagem, TM.Descricao, result.ID);

        }
    }

База данных (таблица изображение ; Хранимая процедура Add_object изображение )

Структура моего проект изображение

ошибка изображение

1 Ответ

0 голосов
/ 01 марта 2020

проверьте это:
1-что это за result.ID вставка? он может принести старый идентификатор и попытаться вставить его.
2 - вы указываете столбец идентификатора как Ключ в c# и Первичный ключ в SQL.
3 - используйте этот метод, который я использую, чтобы добавить Идентификатор вручную в БД, потому что автоинкремент через некоторое время завершится неудачей
SELECT @ID = ISNULL(MAX(ID), 0) + 1 FROM #YourTable
надеюсь, что это поможет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...