Получение выходного параметра хранимой процедуры с помощью LINQ и Entity Framework - PullRequest
8 голосов
/ 16 октября 2010

Я создал хранимую процедуру, которая принимает параметры для создания пользователя.Если пользователь уже существует, он устанавливает выходной параметр на «Пользователь уже существует» и больше ничего не делает.

Теперь я сопоставил эту функцию (InsertNewUser) с моей Entity Framework и вызываю ее так:

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

The ???вот где у меня проблемы.В хранимой процедуре этот параметр является параметром OUTPUT.Я попытался объявить строку, а затем передать "out ОбъявленныйСтрока", но это было не правильно.

Я не уверен, что поступаю правильно, есть мысли?

Это хранимая процедура:

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

Ответы [ 3 ]

10 голосов
/ 22 октября 2010

Вы также можете написать следующим образом:

string output = "";    
context.InsertNewUser(email, name, passwordhash, salt, ref output)
6 голосов
/ 17 октября 2010

Я решил это с помощью этого кода:

//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);
1 голос
/ 20 февраля 2017

Я решил это с помощью следующего кода:

//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();

С Entity Framework 6

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...