Link to Sql - Problems on Updating Database

Discussion of open issues, suggestions and bugs regarding LinqConnect – Devart's LINQ to SQL compatible ORM
Post Reply
jmartarelli
Posts: 2
Joined: Fri 17 Jul 2009 04:19

Link to Sql - Problems on Updating Database

Post by jmartarelli » Fri 17 Jul 2009 04:28

Hello Everyone, I'm quite new to Linq and have had some problems updating my dabase. I don't know if it is actually happening for be using a global data context or I'm missing something. I have my typed DataContex and one Static Public Var to initialize it located within the namespace AlpaCommon, like following:

My partial datacontext***************

Code: Select all

// partial datacontext 
classnamespaceAlpaCommon
{
public partial class AlpaDataContext : System.Data.Linq.DataContext{
//Insert method is working...
public void InsertAnimal2(Animal instance)
{
Animais.InsertOnSubmit(instance);
SubmitChanges();
} 

//Delete method is working...
public void DeleteAnimal2(int animalID)
{
var animal = (from a in Animais where a.AnimalID == animalID select a).First();
Animais.DeleteOnSubmit(animal);
SubmitChanges();
}

//Update method IS NOT working...
public void UpdateAnimal2(Animal newAnimal)
{
var animal = (from a in Animais where a.AnimalID == newAnimal.AnimalID select a).First();
animal = newAnimal;
SubmitChanges();
}
This is where I'm instanciating the datacontext e other variables I'll need in the whole app*********

Code: Select all

//global DataContext instance
namespace AlpaCommon
{
public static class Globals
{
public static AlpaDataContext db = new AlpaDataContext();

This is the call to the update method **************************

Code: Select all

using AlpaCommon;

namespace Animais{
public partial class Altera : System.Web.UI.Page
{
protected void btnUpdate_Click(object sender, EventArgs e)
{
try
{
//cria um novo Objeto do tipo Animal
Animal animalAltera = new Animal();
//set new values animalAltera.AnimalID = Convert.ToInt32(Request.Params["AnimalID"]);
animalAltera.Castrado = CastradoCheckBox.Checked;
animalAltera.DisponivelAdocao = DisponivelCheckBox.Checked;
animalAltera.Adotado = AdotadoCheckBox.Checked;
animalAltera.Nome = NomeTextBox.Text;
animalAltera.Tipo = TipoDropDownList.SelectedValue;
animalAltera.Sexo = SexoDropDownList.SelectedValue;
animalAltera.Descricao = DescricaoTextBox.Text;
animalAltera.Local = LocalTextBox.Text;
animalAltera.Foto = AlteraFoto(); 

AlpaCommon.Globals.db.UpdateAnimal2(animalAltera);

redirect = redirectSucesso;
}
catch
{
redirect = redirectErro;
}
finally{
Helper.Redirect(redirect);
}
}
--------------------------------------------------------------------------------


I'm not catching any exception, it just does not update the database. Am I missing something in my updating or calling method? I'm looking forward for suggestions.

Thank you

Josimari Martarelli

AndreyR
Devart Team
Posts: 2919
Joined: Mon 07 Jul 2008 13:16

Post by AndreyR » Fri 17 Jul 2009 12:23

There is an error in the code you have posted.
When you assign newAnimal to the animal variable, the animal instance is no longer attached to context
(because it points to newAnimal instance from that moment), so no updates are detected.
You should assign all properties of the animal entity to the corresponding fields of the newAnimal entity instead.

Post Reply