首页 > 解决方案 > MVC在添加到表之前检查记录是否存在

问题描述

我有以下问题。如果我每次创建新记录时都使用 dbcontext 向我的数据库表中插入一条记录。因此,例如,如果 Stadt 和 Postleitzahl 已经存在于表中,我的应用程序应该使用记录的 Id 属性来创建具有相同 Postleitzahl 和 Stadt 值的新的自动生成的 Id。我哪里错了?我在 Controller 中的 Create 方法如下所示:

public ActionResult Create()
    {
        return View();
    }

    [HttpPost]
    [ValidateAntiForgeryToken]
    public ActionResult Create(CreateKundeViewModel viewModel)
    {
        if (ModelState.IsValid)
        {
            var kunde = new Kunde()
            {
                Vorname = viewModel.Vorname,
                Nachname = viewModel.Nachname,
                Strasse = viewModel.Strasse,
                Hausnummer = viewModel.Hausnummer,
                Email = viewModel.Email,
                Telefon = viewModel.Telefon,
                AGB = viewModel.AGB,
                Whatsapp = viewModel.Whatsapp,
                Web = viewModel.Web,
                Aktiv = viewModel.Aktiv
            };

            var anrede = new Anrede()
            {
                AnredeText = viewModel.Anrede,
                AnredeTyp = 1
            };


            var stadt = new Stadt()
            { 
                Ort = viewModel.Ort,
                Postleitzahl = viewModel.Postleitzahl
            };

            var hund = new Hund()
            {
                Name = viewModel.HundName,
                Groesse = viewModel.Groesse,
                Gewicht = viewModel.Gewicht,
                Geburtsdatum = viewModel.Geburtsdatum

            };

            var rasse = new Rasse()
            {
                Rassename = viewModel.Rassename
            };

            var kastriert = new Kastriert()
            {
                Kastrierttyp = viewModel.Kastriertname
            };

            var geschlecht = new Geschlecht()
            {
                Geschlechtstyp = viewModel.Geschlecht
            };

            _context.Anredes.Add(anrede);
             _context.Stadts.Add(stadt);
             _context.Kundes.Add(kunde);
             _context.Rasses.Add(rasse);
             _context.Kastrierts.Add(kastriert);
             _context.Geschlechts.Add(geschlecht);
             _context.Hunds.Add(hund);
            _context.SaveChanges();
        }

        return RedirectToAction("Index", "Kunde");
    }

标签: entity-frameworkmodel-view-controller

解决方案


您可以检查记录是否已经存在,然后添加它,如下所示:

if(_context.Kundes.Count(e => e.Vorname== kunde.Vorname)==0)
{
 _context.Kundes.Add(kunde);
}

推荐阅读