2017-09-02 5 views
1

私はWeb APIを呼び出し、コントローラを介してデータベースにレコードを保存していますが、私は毎回apiを呼び出してデータベースにレコードが存在するかどうかをチェックしたいその後保存しない場合は保存しないでください。ここでデータベースwenの既存のレコードを確認するweb apiを呼び出す

foreach(var item in data){ 
      var c = new apicli { 
       Email = item.email, 
       Name = item.name, 
       Aff = item.affiliated_id 
       Login = item.account.real.LastOrDefault()?login??"", 
       Login = item.account.real.LastOrDefault()?pass??"" 
      } 
      if(!db.apiclis.Any(a => a.Email == c.Email && a.Name == c.Name && a.Aff == c.Aff)){ 
       db.apiclis.Add(c); 
      } 
     } 

私はその電子メール+名+ AFF =ユニークidentificatorを前提としています

var client = new WebClient(); 
     var text = client.DownloadString("https://www.test.com/api/all-users?name=testusername%20&pass=334432"); 
     var wclients = JsonConvert.DeserializeObject<dynamic>(text); 
     List<apicli> list1 = new List<apicli>(); 
     var clie = new apicli(); 


     if (wclients.message == "success") 
     { 
      var data = wclients.data; 
      //var account = wclients.account; 
      ViewBag.test = data; 

      foreach(var item in ViewBag.test) 
      { 

       clie.Email = item.email; 
       clie.Name = item.name; 
       clie.Aff = item.affiliated_id; 

       foreach(var item1 in @item.account.real) 
       { 
        clie.Login = item1.login; 
        clie.password = item1.pass; 

       } 
       list1.Add(clie); 
       db.apiclis.AddRange(list1); 
       db.SaveChanges(); 
      }; 
     } 
+0

これは、クライアント側ではなく受信側でのタスクであるべきです。重複が存在する場合、apiはエラーを返して、エラーを適切に処理する必要があります。論理についての考察からも、レコードの存在をテストするには、1つではなく2つの呼び出しが必要であるという事実が強調されます。 – Steve

+0

私はapiを変更することができませんので、クライアント側でそれを行う唯一の方法です.iレコードが存在するかどうかはローカルデータベースで確認する必要があります。 –

答えて

2

私はあなたが各レコードの一意のIDであるかどうか確認する必要があるが、あなたは、このようなものが必要と仮定します。

関連する問題