2016-02-23 4 views
0

У меня есть служба, в которой я пытаюсь добавить новых пользователей. Если пользователь уже exsists не следует добавить, но я получаю сообщение об ошибке. «Ссылка на объект установлен на экземпляр объекта»Ссылка на объект не установлена ​​в экземпляр объекта в C#

[WebMethod] 
    [ScriptMethod(ResponseFormat = ResponseFormat.Json)] 
    public string AddUsers(UsersJSON UserJSON) 
    { 
     using (var context = new Data.DataEntities()) 
     { 
      var users = context.Users.Where(c => c.UserId == UserJson.UserId).FirstOrDefault(); 
      var newuser = new Users(); 
      { 
       if (users.UserId != UserJson.UserId)//error here 
       { 
        newuser.UserId = UserJson.UserId; 
        newuser.FirstName = UserJson.FirstName; 
        newuser.LastName = UserJson.LastName; 

       } 
      } 
      context.Users.Add(newuser); 
      context.SaveChanges(); 
      JavaScriptSerializer JSON = new JavaScriptSerializer(); 
      return JSON.Serialize(newuser); 
     } 
    } 
+0

@mason: Честно говоря, это не очень полезно. –

+0

Как именно вы тестируете, если пользователь не существует? Вы даже проводите тест? –

+0

Вы забыли одну очень важную информацию - где именно это заброшенное исключение? Как вы хотите исправить ошибку, о которой вы не знаете, где это происходит? –

ответ

0

Вы используете .FirstOrDefault, которые могут, возможно, вернуть нуль. Поэтому вам нужно защититься от этого.

var users = context.Erp_Users.Where(c => c.UserId == erpUserJson.UserId).FirstOrDefault(); 
var newuser = new Erp_Users(); 
{ 
    if (users != null && users.UserId != erpUserJson.UserId)//no error here 
    { 
     ... 
+0

если мне нравится его нарушение после сохранения(). – vana

Смежные вопросы