2016-03-22 21 views
2

ASP.NET'teki bir denetleyicide yalnızca tek bir satırın nasıl güncelleştirileceğini belirleyen sorunlar yaşıyorum. Oluşturduğum Web API'sına bir gönderi isteği göndermeye çalışıyorum ve istek yalnızca bir satırı güncellemek yerine, SQL'de işlenmeye çalıştığım tablodaki tüm satırları (sütun hedefindeki tüm satırlar) güncelleştiriyor veri tabanı. Bu sorunla ilgili herhangi bir yardım mutluluk duyacaktır. AngularJS'de $ http hizmetini kullanarak posta isteği gönderiyorum.ASP.NET Web API Denetleyici Güncelleştirmesi Satır

ASP.NET C#

public class patient_goalsController : ApiController 
    { 
     . 
     . 
     . 

     //POST: api/goals/update/1 
     [Route("Api/goals/update/{id}")] 
     public void UpdatePatientGoal(int id, patient_goals patient_goals) 
     { 
      var goals = (from p_goal in db.patient_goals 
         where patient_goals.id == id 
         select p_goal); 
      foreach(patient_goals row in goals) 
      { 
       row.goal = patient_goals.goal; 
      } 


     } 

     . 
     . 
     . 

    } 

angularjs

$scope.updateGoal = function(goal){ 
goal.editing = false; 
console.log(goal.id); 
var data = {"id": goal.id, "goal": goal.goal} 
$http({ 
    method: "POST", 
    url: urlBase + "/goals/update/" + goal.id, 
    data: data, 
}).then(function error(response) { 
    $scope.error = response.statusText; 
    console.log(response.statusText); 
}); 

DB

id (int) 
goal (text) 

cevap

4

Sadece istediğiniz bağlı tek varlığı bulun, düzenlemeleri yapın ve değişikliklerinizi kaydedin.

[Route("Api/goals/update/{id}")] 
public void UpdatePatientGoal(int id, patient_goals) 
{ 
     var goal = db.patient_goals.FirstOrDefault(x => x.id == id); 

     if(goal != null) 
     { 
      goal.goal = patient_goals.goal; 
      db.SaveChanges(); 
     } 
    } 
+0

Bir milyon teşekkürler, bu benim sorunumu çözdü. ASP.NET'e oldukça yeni geldim, bu yüzden sorgularımı yapmak için en iyi yöntemleri bilmiyorum. – user3704351

+0

@ user3704351 Sorun değil, yardımcı oldu. –

0

Gerçekten veritabanı şema ayrıntılarını bilmiyorum ama bu senin where benziyor -hakkında yanlıştır. Aksine patient_goals.id karşılaştırarak yerine, p_goal karşılaştırarak olacaktır:

  var goals = (from p_goal in db.patient_goals 
         where p_goal.id == id 
         select p_goal); 

Aksi takdirde, sadece parametre listesinden değerlerini karşılaştırarak bulunmaktadır.

+0

Maalesef, sorgumu yukarıdaki önerilerinizle değiştirmem sorunu çözmediyse, posta isteği hala çalışıyor ancak tablomdaki herhangi bir satırı değiştirmiyor. – user3704351