2016-12-09 5 views
-1

I Verfahren check_user gespeichert haben:-Code Login C# Entity Framework

ALTER proc [dbo].[check_user] 
    @u nvarchar(20), 
    @p nvarchar(20) 
AS 
BEGIN 
    declare @count int 
    declare @res bit 

    select @count = COUNT(*) 
    from Account 
    where username = @u and passwd = @p 

    if @count > 0 
     set @res = 1 
    else 
     set @res = 0 

    select @res 
end 

, dass Code in Visual Studio verwenden, ist Demoentities Name des Entity Framework in Verbindungseinstellungen

Demoentities dm = new Demoentities(); 

if(dm.checkuser(tb_user.Text,tb.pass.Text) == 1) 
    MessageBox.Show("Login successfully!"); 

Aber ich sehe Fehler:

Operator '==' cannot be applied to operands of type 'System.Data.Objects.ObjectResult' and 'int'

Hilf mir!

+0

statt 'wählen ...' Sie tun können, 'wählen @res ... 'und es wird sparen Sie vergleichen Werte –

+1

so was funktioniert hier nicht? – mybirthname

+1

Bitte zeigen Sie den Code in 'dm.checkuser' – stuartd

Antwort

0

Nun, Sie können nicht zwei verschiedene Arten vergleichen. Vielleicht versuchen Sie Ihr Verfahren zu ändern:

ALTER proc [dbo].[check_user] 
@u nvarchar(20), 
@p nvarchar(20) 
as 
begin 
    declare @count int 
    declare @result bit 
    select @count = COUNT(*) from Account where username = @u and passwd = @p 
    if @count > 0 
     set @result = 1 
    else 
     set @result = 0 
    Return @result 
end 

Statt ein select @res am Ende versuchen, ein return.

Auch die if Anweisung ändern in:

if(dm.checkuser(tb_user.Text,tb.pass.Text)) MessageBox.Show("Login successfully!");

EDIT: Nur im Sinn: Wenn Ihre Methode dm.checkuser(string, string) keine bool zurückgibt, versuchen, das zu bearbeiten. Ich kenne den Code für diese Methode nicht ... sry.

+0

Ich habe Ihren Code verwendet und erhalte einen Fehler: Fehler Kann den Typ 'int' nicht implizit in 'bool' konvertieren. Bitte helfen Sie mir Code-Login mit Entityframework :( – justcntt

+0

Mein schlechtes. Ändern Sie den Ergebnistyp in Ihrer Methode zu einem bool. Das sollte den Trick tun. Wie gesagt, vielleicht sollten Sie Ihre 'dm.checkuser()' Methodencode für uns . – Cataklysim

0

Hallo dort haben Sie Einzel() Funktion verwenden, da C# nicht IQuerable Typ konvertiert @count in int

if(dm.checkuser(tb_user.Text,tb.pass.Text).single() == 1) 
MessageBox.Show("Login successfully!");