2010-10-16 26 views
6

ile saklı yordam çıktı parametresi alınırken, bir kullanıcı oluşturmak için parametreleri alan saklı yordam oluşturdum. Kullanıcı zaten mevcutsa, çıkış parametresini 'Kullanıcı zaten var' olarak ayarlar ve daha fazlasını yapmaz. LINQ ve Entity Framework

Şimdi benim Entity Framework için bu işlevi (InsertNewUser) eşlediyseniz ve böylece gibi sesleniyorum:

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

??? sorunum olduğu yer. Saklı yordamda bu parametre bir OUTPUT parametresidir. Bir dize bildirmeyi denedim ve sonra "decleredString dışında" iletmeyi denedim, ancak bu doğru değildi.

Bu konuda doğru yoldan gideceğime emin değilim, herhangi bir düşünce?

Bu

Saklı Yordam geçerli:

Ben bu kod ile çözüldü
 
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 

cevap

5

:

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

Ayrıca aşağıdaki şekilde yazabiliriz:

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

öylesine .. çok .. daha kolay .. neden ref'yi düşünmedim ?! Sadece denendi – Phil

0

ben onu çözdüm aşağıdaki kodla birlikte 12

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

Varlık Çerçevesi 6