C# se om en användares epost redan finns

Trädvy Permalänk
Medlem
Plats
127.0.0.1
Registrerad
Jun 2016

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 ?

[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]

Trädvy Permalänk
Medlem
Registrerad
Dec 2005

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...

Trädvy Permalänk
Medlem
Plats
Kungsbacka
Registrerad
Aug 2006

Ä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.

ASUS Crosshair VI Hero // AMD Ryzen 7 1700 @3.85GHz @ 1.35V // ASUS GTX 1080 Ti STRIX// G.Skill Flare X 2x8GB 3200MHz // Noctua NH-D15// Samsung 960 EVO 1TB // Fractal Design Define R5 // 2x ASUS MG278Q

Trädvy Permalänk
Medlem
Plats
127.0.0.1
Registrerad
Jun 2016

@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?

[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]

Trädvy Permalänk
Medlem
Plats
Kungsbacka
Registrerad
Aug 2006
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

ASUS Crosshair VI Hero // AMD Ryzen 7 1700 @3.85GHz @ 1.35V // ASUS GTX 1080 Ti STRIX// G.Skill Flare X 2x8GB 3200MHz // Noctua NH-D15// Samsung 960 EVO 1TB // Fractal Design Define R5 // 2x ASUS MG278Q

Trädvy Permalänk
Medlem
Registrerad
Dec 2005
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)

Trädvy Permalänk
Medlem
Plats
127.0.0.1
Registrerad
Jun 2016

@Heineken89:

Du löste det åt mig tack som fasen

[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]

Trädvy Permalänk
Medlem
Plats
Kungsbacka
Registrerad
Aug 2006
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

ASUS Crosshair VI Hero // AMD Ryzen 7 1700 @3.85GHz @ 1.35V // ASUS GTX 1080 Ti STRIX// G.Skill Flare X 2x8GB 3200MHz // Noctua NH-D15// Samsung 960 EVO 1TB // Fractal Design Define R5 // 2x ASUS MG278Q