0

我試圖執行一個存儲過程插入使用實體框架的記錄。我已經瀏覽了各種相關主題的多個教程,並且介紹瞭如何實現這一目標。現在通過fiddler獲取錯誤(ArgumentNullReferenceException),同時使用Web API。Web API和實體框架插入存儲過程ArgumentNullReference異常

這是我的代碼:

存儲過程:

ALTER PROCEDURE [dbo].[spInsUsers] 
    (@user_name nvarchar(50), 
    @first_name nvarchar(50), 
    @last_name nvarchar(50), 
    @mobile_no varchar(10), 
    @email nvarchar(50), 
    @user_pic varchar(256), 
    @strowner int, 
    @dbtstamp datetime2) 
AS 
    SET NOCOUNT OFF; 

    INSERT INTO [tbl_users] ([user_name], [first_name], [last_name], [mobile_no], [email], [user_pic], [strowner], [dbtstamp]) 
    VALUES (@user_name, @first_name, @last_name, @mobile_no, @email, @user_pic, @strowner, @dbtstamp); 

    SELECT 
     user_id, user_name, first_name, last_name, mobile_no, email, 
     user_pic, strowner, dbtstamp 
    FROM 
     tbl_users 
    WHERE 
     (user_id = SCOPE_IDENTITY()) 

存儲過程映射:

enter image description here

用戶控制器:

public class UserDetails 
{ 
      public string user_name { get; set; } 
      public string first_name { get; set; } 
      public string last_name { get; set; } 
      public string mobile_no { get; set; } 
      public string email { get; set; } 
      public string user_pic { get; set; } 
      public int strowner { get; set; } 
      public DateTime dbtstamp { get; set; } 
} 

[Authorize] 
[Route("AddUser")] 
public HttpResponseMessage PostUsers([FromBody] tbl_users Users) 
{ 
    using(UsersEntities uent = new UsersEntities()) 
    { 
     uent.tbl_users.Add(Users); 
     uent.SaveChanges(); 

     var message = Request.CreateResponse(HttpStatusCode.Created, Users); 
     message.Headers.Location = new Uri(Request.RequestUri + 
     Users.user_id.ToString()); 

     return message; 
    } 
} 

錯誤:

enter image description here

+0

可能重複[什麼是NullReferenceException,以及如何解決它?](https://stackoverflow.com/questions/4660142/what-is-a-nullreferenceexception-and-how-doi-i-fix -它) – TheGameiswar

回答

0

明白了。我的JSON請求是錯誤的。解決了。

在早期的解決方案中,我錯過了存儲過程本身。

我的最終工作解決方案看起來像這樣。

[Authorize] 
     [Route("Add_User")] 

     public HttpResponseMessage PostUsers1([FromBody] tbl_users Users) 
     { 
      using (var context = new UsersEntities()) 
      { 
       var response = context.spInsUsers(Users.user_name, Users.first_name, Users.last_name, Users.mobile_no, 
        Users.email, Users.user_pic, Users.strowner, DateTime.Now); 

       var message = Request.CreateResponse(HttpStatusCode.Created, Users); 
       message.Headers.Location = new Uri(Request.RequestUri + 
        response.ToString()); 

       return message; 

      } 

     } 

謝謝。