MVC在添加到表之前检查记录是否存在

时间:2019-03-16 14:35:17

标签: entity-framework model-view-controller

我遇到了以下问题。如果我每次创建新记录时都使用dbcontext将记录插入到数据库表中。 因此,例如,如果表中已经存在Stadt和Postleitzahl,则我的应用程序应采用记录实例的ID属性,以创建具有相同Postleitzahl和Stadt值的新的自动生成的ID。 我要去哪里错了? 我在Controller中的创建方法如下:

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");
    }

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:-1)

如果您使用的是EntityFramework 4.3,则可以使用AddOrUpdate名称空间下的System.Data.Entity.Migrations方法。

public static void AddOrUpdate<TEntity>(
    this IDbSet<TEntity> set,
    params TEntity[] entities
)
where TEntity : class

请使用link作为参考

如果您使用的是旧版的Entity Framework,则此链接可能会有所帮助

Update Row if it Exists Else Insert Logic with Entity Framework