2011-06-29 20 views
5

Bu yüzden, bir DB'yi linq ile SQL ile güncelleştirmek için birçok soru olduğunu biliyorum, sorum şu, kabul edilen bir standartta mı yapıyorum? Burada linq to sql güncelleştirme standardı

benim kodudur: yüzden sadece bilmiyorum işe yarayacak biliyorum

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (!IsPostBack) 
    { 
     //load data to page 
    } 
    else 
    { 
     using (var db = new App_Data.MyDataContext()) 
     { 
      var Query = (from p in db.peoples 
         where p.ipeople_ID == 59225 
         select p).Single(); 

      Query.cFirstName = FirstName.Value; 

      try { db.SubmitChanges(); } 
      catch (ChangeConflictException) 
      { 
       db.ChangeConflicts.ResolveAll(RefreshMode.KeepChanges); 
       db.SubmitChanges(); 
      } 
     } 
    } 
} 

Ben deneme yanılma (! google aramalarında çok sayıda) tarafından asp.net öğreniyorum kod olur eğer beni bir konferanstan güldürün! : O bir yaklaşım D

Teşekkür

cevap

2

Bazı değişiklikler:

uzakta sayfa yükleme etkinlikten mantığı taşımak ve açıkça/güncellemeyi kaydetmek olayı tetikleyecektir.

Böyle bir durumda değişiklik çakışmasını ele alırdım ... Bu hatayı gizlemem ve değişiklikleri yeniden göndermeyi denemem.

protected void Page_Load(object sender, EventArgs e) { 
if (!IsPostBack){ 
    //load data to page 
}   
} 

protected void SaveChanges_Click(object sender, EventArgs e) { 
using (var db = new App_Data.MyDataContext()) { 
    var person = db.peoples.SingleOrDefault(p=> p.ipeople_ID == 59225); 

    if(person == null) { 
    // notify UI that person doesn't exist 
    return; 
    } 

    person.cFirstName = txtFirstName.Text; 

    try { db.SubmitChanges(); } 
    catch (Exception ex){ 
    //Log error 
    } 
} 
} 
+0

Dolayısıyla, kendi yönteminde koyarak, ben sadece benim düğmesi runat sunucu göndermek ve daha sonra onclick olayı SaveChanges_Click aramasını olurdu? – Limey

+1

Evet, işe yarayacak! –

+1

Yardım için teşekkürler! Keşke sana bir cevap verebilirdim! – Limey

2

Bu bana oldukça standart görünüyor. Ancak tek satırlarını alma için farklı, daha basit sözdizimi öneririm: rekor yoksa

db.Peoples.SingleOrDefault(p => p.ipeople_ID == 59225) 

Bu şekilde, NULL alacak. Hiçbir kayıt bulunamazsa Single bir istisna atar. Ayrıca, güncelleme kodunu minimum numaralı telefondan tek tıklatmayla ayırıp, doğrudan Post'a geri yükleyen kişi biraz tuhaf görünüyor.

Ayrıca yerel değişkenler için küçük harfli değişkenleri de beğeniyorum ama buna katılmayacağım.