4

Dynamics CRM 2011 の SDK を使用して遅延バインディング エンティティへの変更を保存する方法を知っている人はいますか?

これは私が試したことです:

// 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!" );
}

すべての助けをありがとう:)

4

2 に答える 2

6

これを試して:

pet["foodtype"] = "Seaweed";

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

EDIT:"The context is not currently tracking the 'pet' entity"取得したオブジェクトがRetrieveサービスコンテキストにアタッチされていないことを意味します。Attachまさにそれを行う方法があります。

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

xrm.UpdateObject( pet );
xrm.SaveChanges();
于 2012-07-12T15:52:56.603 に答える
2

これは機能します:

pet["foodtype"] = "Seaweed";
pet.EntityState = EntityState.Changed; // not sure if this is really needed
// save pet
xrm.Update(pet);
于 2012-07-12T16:05:13.147 に答える