2012-07-12 2 views
4

Est-ce que quelqu'un sait comment enregistrer les modifications apportées à une entité liée tardivement à l'aide du SDK pour Dynamics CRM 2011?MS Dynamics CRM 2011 SDK - Mise à jour de l'enregistrement d'entité à l'aide de la liaison tardive

C'est ce que j'ai essayé:

// retrieve and modify a pet... 
// (This part works) 
Guid findId = new Guid("6CA57D73-30CC-E111-B155-00505630052F"); 
ColumnSet attributes = new ColumnSet(new string[] { "name", "foodtype" }); 

// try to retrieve 
// (this also works) 
pet = xrm.Retrieve("pet", findId, attributes); 
if(pet!=null) 
{ 
    Console.WriteLine(String.Format("Retrieved pet {0} successfully!", pet["name"].ToString())); 
    // update attributes 
    pet["foodtype"] = "Seaweed"; 
    // (from here doesn't seem to work) 
    // save pet 
    xrm.SaveChanges(); 
    Console.WriteLine("Done!"); 
} 

Merci pour toute l'aide :)

+0

Quelle est l'erreur que cela soulève? –

Répondre

6

Essayez ceci:

pet["foodtype"] = "Seaweed"; 

xrm.UpdateObject(pet); 
xrm.SaveChanges(); 

EDIT: "The context is not currently tracking the 'pet' entity" signifie que l'objet que vous obtenez de Retrieve est pas attaché au contexte de service. Il y a une méthode Attach qui fait exactement cela.

xrm.Attach(pet); 
pet["foodtype"] = "Seaweed"; 

xrm.UpdateObject(pet); 
xrm.SaveChanges(); 
+0

Cela donne une erreur sur UpdateObject: "Le contexte ne suit pas actuellement l'entité 'pet'". – CompanyDroneFromSector7G

+0

J'avais déjà trouvé une solution (voir ci-dessous) mais votre réponse était pédagogique, et cela fonctionne, donc j'accepte la vôtre. Merci pour l'aide :) – CompanyDroneFromSector7G

2

Cela fonctionne:

pet["foodtype"] = "Seaweed"; 
pet.EntityState = EntityState.Changed; // not sure if this is really needed 
// save pet 
xrm.Update(pet); 
Questions connexes