2010-10-16 16 views
6

Ho creato una procedura memorizzata che richiede parametri per creare un utente. Se l'utente esiste già, imposta il parametro di uscita su "Utente già esistente" e non fa altro.Parametro di output della stored procedure con LINQ e Entity Framework

Ora ho mappati questa funzione (InsertNewUser) al mio Entity Framework e chiamo in questo modo:

 
context.InsertNewUser(email, name, passwordhash, salt, ???) 

Il ??? è dove sto avendo problemi. Nella stored procedure questo parametro è un parametro OUTPUT. Ho provato a dichiarare una stringa e quindi passare "out declaredString" ma non era corretto.

Non sono sicuro che sto andando su questo nel modo giusto, qualche pensiero?

Questa è la stored procedure:

 
ALTER PROCEDURE dbo.InsertNewUser 

    (
    @eMail nvarchar(256), 
    @firstName nvarchar(256), 
    @lastName nvarchar(256), 
    @passwordHash nvarchar(256), 
    @salt nvarchar(256), 
    @output nvarchar(256) OUTPUT 
    ) 

AS 
    /* Saves a user to the db. */ 
    BEGIN 
    --First check if the user doesn't exist 
    IF EXISTS (SELECT eMail FROM UserSet WHERE eMail = @eMail) 
     --Return that user exists 
     SET @output = 'User exists' 
    ELSE  
     INSERT INTO UserSet 
     VALUES (@eMail, @firstName, @lastName, @passwordHash, @salt) 
    END 

risposta

5

ho risolto con questo codice:

 
//This will provide the parameter 
System.Data.Objects.ObjectParameter parameter = new ObjectParameter("output", "nvarchar(256)"); 
//This will contain the returned values 
ObjectResult result = context.CheckIfUserExists(eMail, parameter); 
10

È possibile anche scrivere nel seguente modo:

string output = "";  
context.InsertNewUser(email, name, passwordhash, salt, ref output) 
+0

così .. tanto .. più facile .. perché non ci ho pensato di ref ?! Solo provato – Phil

0

ho risolto con il seguente codice:

//Execute stored procedure 
ObjectParameter newkey = new ObjectParameter("newKey", typeof(char)); 
db.RF_GetNewKey("A", "B", "S",newkey); 

//get new key output from stored procedure RF_GetNewKey 
string myKey=newkey.Value.ToString(); 

Con Entity Framework 6

Problemi correlati