C# se om en användares epost redan finns

Permalänk

C# se om en användares epost redan finns

Hej!

Håller på att göra ett registreringsscript till min sida jag jobbar på , jag vill dock att en användare inte ska kunna använda en epost som redan finns, jag använder entites men när jag försöker så får jag bara felmeddelande, mitt script ser ut såhär:
Den hämtar alltså texten från en textbox

var user_info = db.user_Profile .SingleOrDefault(c => c.userEmail == emailTextBox.Text); if (confirmEmailTextBox.Text == user_info.userEmail) { registerCompleteLabel.Text = "Email already exist!"; } else { // Continue script}

Det funkar fint om eposten redan finns, men när jag försöker skriva in en epost som inte finns så får jag fel.

Jag gissar på att jag gjort nåt väldigt galet ?

Visa signatur

[ASUS X99-DELUXE] - [i7 5960X] - [48 GB Corsair Dominator Platinum] - [ASUS ROG 780TI] - [ Kingston HyperX Predator 480GB PCI-E ] - [ 12TB 4x3TB WD RED SERIES ] - [Some SSD ~1TB] - [ASUS ROG PG278Q] - [Corsair AX1200i] - [Corsair Hydro Series H115i]

Permalänk
Medlem

Använd String.Contains. Kan också vara bra att kolla om emailen i databasen har ett värde.
https://msdn.microsoft.com/en-us/library/dy85x1sa(v=vs.110).a...

Permalänk
Medlem

Är det ett null reference exception du får?

För om den inte hittar ett konto alls så är user_info null, därav finns det ingen user_info.userMail att hitta därav en krash.

Det du kan göra är att kolla om user_info är null först, isf vet du att det inte finns något konto med emailadressen.

Visa signatur

Gaming: MSI X570 MPG Gaming Plus -- AMD Ryzen 9 5900X -- Sapphire Radeon RX 6800 XT NITRO+ -- G.Skill 32GB 3600MHz CL14 -- Samsung 960 EVO 1TB -- 2x ASUS MG278Q -- Arch-based EndeavourOS
VR: ASRock B550M-ITX/ac -- AMD Ryzen 5 5600G -- ASUS RTX 3070 -- Corsair 16GB 3600MHz CL18 -- Kingston A2000 250GB -- Windows 10

Permalänk

@Heineken89:

Stämmer bra.
Jag tänkte gjort något som kollade om det är null, blir det nåt i stil med :

if (user_info.userID == null) {///Koden}

Är det nåt sånt du tänker eller?

Visa signatur

[ASUS X99-DELUXE] - [i7 5960X] - [48 GB Corsair Dominator Platinum] - [ASUS ROG 780TI] - [ Kingston HyperX Predator 480GB PCI-E ] - [ 12TB 4x3TB WD RED SERIES ] - [Some SSD ~1TB] - [ASUS ROG PG278Q] - [Corsair AX1200i] - [Corsair Hydro Series H115i]

Permalänk
Medlem
Skrivet av carbonprogrammer:

@Heineken89:

Stämmer bra.
Jag tänkte gjort något som kollade om det är null, blir det nåt i stil med :

if (user_info.userID == null) {///Koden}

Är det nåt sånt du tänker eller?

var user_info = db.user_Profile .SingleOrDefault(c => c.userEmail == emailTextBox.Text); if (user_info != null) registerCompleteLabel.Text = "Email already exist!"; else // Continue script}

eller kolla om:

if user_info == null
continue registration

Båda funkar

Visa signatur

Gaming: MSI X570 MPG Gaming Plus -- AMD Ryzen 9 5900X -- Sapphire Radeon RX 6800 XT NITRO+ -- G.Skill 32GB 3600MHz CL14 -- Samsung 960 EVO 1TB -- 2x ASUS MG278Q -- Arch-based EndeavourOS
VR: ASRock B550M-ITX/ac -- AMD Ryzen 5 5600G -- ASUS RTX 3070 -- Corsair 16GB 3600MHz CL18 -- Kingston A2000 250GB -- Windows 10

Permalänk
Medlem
Skrivet av carbonprogrammer:

@Heineken89:

Stämmer bra.
Jag tänkte gjort något som kollade om det är null, blir det nåt i stil med :

if (user_info.userID == null) {///Koden}

Är det nåt sånt du tänker eller?

if (user_info.userEmail && confirmEmailTextBox.Text == user_info.userEmail)

Permalänk

@Heineken89:

Du löste det åt mig tack som fasen

Visa signatur

[ASUS X99-DELUXE] - [i7 5960X] - [48 GB Corsair Dominator Platinum] - [ASUS ROG 780TI] - [ Kingston HyperX Predator 480GB PCI-E ] - [ 12TB 4x3TB WD RED SERIES ] - [Some SSD ~1TB] - [ASUS ROG PG278Q] - [Corsair AX1200i] - [Corsair Hydro Series H115i]

Permalänk
Medlem
Skrivet av carbonprogrammer:

@Heineken89:

Du löste det åt mig tack som fasen

Inga problem, en annan lösning du kan göra också är att göra en query som returnerar en bool istället för ett object mot databasen, det handlar väl mer om en optimering.

bool doesEmailExistInDB = db.user_Profile.Any(c => c.userEmail == emailTextBox.Text);

Här kollar du om det finns någon User_Profile som har emailen emailTextBox.Text. Finns ingen så får du false, finns det en så får du true.

if doesEmailExistInDB
email already exist
else
continue registration

Visa signatur

Gaming: MSI X570 MPG Gaming Plus -- AMD Ryzen 9 5900X -- Sapphire Radeon RX 6800 XT NITRO+ -- G.Skill 32GB 3600MHz CL14 -- Samsung 960 EVO 1TB -- 2x ASUS MG278Q -- Arch-based EndeavourOS
VR: ASRock B550M-ITX/ac -- AMD Ryzen 5 5600G -- ASUS RTX 3070 -- Corsair 16GB 3600MHz CL18 -- Kingston A2000 250GB -- Windows 10