Hur kollar man om email är upptagen i databasen innan registrering ASP.NET MVC?

Permalänk

Hur kollar man om email är upptagen i databasen innan registrering ASP.NET MVC?

Håller på att skapa ett inloggningsformulär och registrering. Mitt problem just nu är att jag inte vet hur jag ska kolla om en email är ledigt i databasen för att kunna skapa en användare.
Email kolumnen i tabellen User i databasen är primary key och jag får detta fel när jag försöker skapa en användare med samma email som redan finns i databasen

Violation of PRIMARY KEY constraint 'PrimaryKey_a4dbd519-6b67-4fa6-8afe-08f838e4f6b5'. Cannot insert duplicate key in object 'dbo.User'. The duplicate key value is (test@hotmail.com). The statement has been terminated.

Hur löser jag detta enklast på serversidan, kan jag använda mig av en if-sats här eller löser man det på något annat sätt?

[HttpPost] public ActionResult Registration(LoginLogout.Models.User user) { if (ModelState.IsValid) { using (db) { var crypto = new SimpleCrypto.PBKDF2(); var encrypPass = crypto.Compute(user.Password); var sysUser = db.Users.Create(); sysUser.Email = user.Email; sysUser.Password = encrypPass; sysUser.PasswordSalt = crypto.Salt; sysUser.UserID = Guid.NewGuid(); db.Users.Add(sysUser); db.SaveChanges(); return RedirectToAction("Index", "User"); } } else { ModelState.AddModelError("", "Inloggningsinformationen är fel."); } return View(); }

Visa signatur

CPU: AMD Ryzen 7 7800X3D
Ram: Kingston 32GB DDR5 6000MHz
GPU: XFX Radeon RX 6800 XT MERC 319
Operativsystem: Windows 11

Permalänk
Medlem

var emailAlreadyExists = db.Users.Any(x => x.Email == user.Email);

Beroende på hur du har satt upp din databas så är ovanstående också case-insensitive

Permalänk
Skrivet av Wickit:

var emailAlreadyExists = db.Users.Any(x => x.Email == user.Email);

Beroende på hur du har satt upp din databas så är ovanstående också case-insensitive

Förstår inte vad jag ska göra med den? Men jag löste det med AJAX.

Visa signatur

CPU: AMD Ryzen 7 7800X3D
Ram: Kingston 32GB DDR5 6000MHz
GPU: XFX Radeon RX 6800 XT MERC 319
Operativsystem: Windows 11