MVC проверяет, существует ли запись перед добавлением в таблицу - PullRequest
1 голос
/ 16 марта 2019

У меня следующая проблема.Если я вставляю запись в таблицы базы данных с помощью dbcontext каждый раз, когда создается новая запись.Так, например, если Stadt и Postleitzahl уже существуют в таблице, мое приложение должно использовать свойство Id записи, чтобы создать новый автоматически сгенерированный Id с теми же значениями Postleitzahl и Stadt.Куда я иду не так?Мой метод создания в контроллере выглядит следующим образом:

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 голосов
/ 16 марта 2019

Вы можете проверить, если запись уже существует, а затем добавить ее, например:

if(_context.Kundes.Count(e => e.Vorname== kunde.Vorname)==0)
{
 _context.Kundes.Add(kunde);
}
0 голосов
/ 16 марта 2019

Если вы используете EntityFramework 4.3, вы можете использовать метод AddOrUpdate, который находится под System.Data.Entity.Migrations пространством имен.

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

Пожалуйста, используйте ссылку для справки

Если вы используете более старую версию Entity Framework, эта ссылка может помочь

Обновить строку, если она существует, иначе вставить логику с Entity Framework

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