2009-01-09 16 views
9

Con LINQ to SQL en un sitio web ASP.NET MVC puedo mostrar objetos (registros) de la tabla de mi base de datos.¿Cómo guardo mi objeto en mi base de datos en LINQ to SQL?

Ahora me gustaría crear un nuevo objeto y guardarlo de nuevo en la base de datos.

En mi controlador, hago esto:

var dataContext = new MessageDataContext(); 
    Message message = new Message(); 
    message.Action = "save"; 
    message.Body = "record"; 
    message.Parameter = "234"; 

Y ahora quiero desviar con algo como esto:

message.Save(); 

O quizás:

dataContext.SubmitChanges(message); 

Pero ni de estos trabajos

¿Cuál es la sintaxis aquí para:

  • añadir nuevos objetos y guardarlos en la base de datos?
  • hacer cambios en los objetos existentes y guardarlos en la base de datos?

Respuesta

26

Lo que estamos buscando es:

dataContext.Messages.InsertOnSubmit(message); 
dataContext.SubmitChanges(); 

Asumiendo que tiene una mesa Messages mapeado en su LINQ a SQL DBML.

+0

¿Puedo ayudar con mi problema, por favor? [vinculado aquí] (http://stackoverflow.com/questions/12761598/linq-to-sql-updates-datacontext-but-not-the-database) – Jed

+1

@Jed - acabo de llegar, y veo que ' he resuelto esto :) – Kev

+0

no se supone que la misma acción sea realizada por dataContext.Messages.Attach (mensaje) ??? – balanza

9

Para añadir nuevos objetos acaba de hacer:

dbContext.Messages.InsertOnSubmit(message); 
dbContext.SubmitChanges(); 

Si realiza algún cambio en las entidades cargadas previamente acaba de hacer:

dbContext.SubmitChanges(); 

Si no desea enviar cualquier entidad cambiada necesita hacer:

dbContext.Refresh(RefreshMode.OverwriteCurrentValues, message); 
Cuestiones relacionadas