2011-06-29 26 views
5

Así que sé que hay muchas preguntas sobre cómo actualizar un DB con linq a SQL, mi pregunta es, ¿estoy haciendo esto en un estándar aceptado?linq to sql update standard

aquí es mi código:

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(); 
      } 
     } 
    } 
} 

estoy aprendiendo asp.net por ensayo y error (! Y un montón de búsquedas de Google) así que sé que va a funcionar, pero no sé si el código haría ¡hazme reír de una conferencia! : D

Gracias

Respuesta

2

Algunos cambios:

que se moverían su lógica de distancia del evento de carga de la página, y explícitamente desencadenar un evento de guardar/actualización.

Me gustaría abordar el conflicto de cambio si eso está sucediendo ... No escondería ese error e intentaré volver a enviar los cambios.

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

Por lo tanto, al ponerlo en su propio método, ¿simplemente tendría mi servidor runat runat y luego hacer que el evento onclick llame a SaveChanges_Click? – Limey

+1

Sí, eso funcionaría! –

+1

¡Gracias por toda la ayuda! ¡Ojalá pudiera darles una respuesta a ambos! – Limey

2

Esto parece bastante estándar para mí, en su enfoque. Sin embargo, yo sugeriría una sintaxis diferente, más simple para capturar las filas individuales:

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

De esta manera, obtendrá NULL si el registro no existe. Single lanzará una excepción si no se encuentra ningún registro. También separaría el código de actualización en un clic de botón en como mínimo, actualizar a la persona directamente en la publicación posterior parece un poco extraño.

También me gustan las variables en minúsculas para las variables locales, pero no entraré en eso.