2010-10-16 27 views
6

Tôi đã tạo một thủ tục lưu sẵn có tham số để tạo người dùng. Nếu người dùng đã tồn tại nó đặt tham số đầu ra thành 'Người dùng đã tồn tại' và không làm gì hơn.Bắt tham số đầu ra thủ tục lưu trữ với LINQ và Entity Framework

Bây giờ tôi đã ánh xạ chức năng này (InsertNewUser) để khung Entity của tôi và gọi nó như vậy:

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

Các ??? là nơi tôi đang gặp rắc rối. Trong thủ tục lưu sẵn, tham số này là tham số OUTPUT. Tôi đã cố gắng khai báo một chuỗi và sau đó đi qua trong "out declareString" nhưng điều đó không đúng.

Tôi không chắc mình sẽ làm đúng cách này, có suy nghĩ gì không?

Đây là 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 

Trả lời

5

Tôi giải quyết nó với mã này:

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

Bạn cũng có thể viết theo cách sau:

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

vì vậy .. nhiều .. dễ dàng hơn .. tại sao tôi không nghĩ đến ref ?! Chỉ thử – Phil

0

Tôi giải quyết nó với mã sau:

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

Với khung thực thể 6

Các vấn đề liên quan