views:

84

answers:

2

I've created a stored procedure that takes parameters to create a user. If the user already exists it sets the output parameter to 'User already exists' and does nothing more.

Now I've mapped this function (InsertNewUser) to my Entity Framework and am calling it like so:

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

The ??? is where I'm having trouble. In the stored procedure this parameter is an OUTPUT parameter. I tried declaring a string and then passing in "out declaredString" but that wasn't correct.

I'm not sure I'm going about this the right way, any thoughts?

This is the 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
A: 

I solved it with this code:

//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);
Phil
+1  A: 

You can also write in the following way:

string output = "";    
context.InsertNewUser(email, name, passwordhash, salt, ref output)
Fore
so.. much.. easier.. why didn't I think of ref?! Only tried out
Phil