11

問題なく新しいエンティティを作成できますが、プラグイン内の既存のエンティティを更新しても機能していないようです。これは CRM 2011 用です。

var crmContext = new CustomCrmContext(service);

var contact = crmContext.Contact.FirstOrDefault(c=>c.Id == targetEntity.Id);

contact.new_CustomField = "Updated";

crmContext.SaveChanges();
4

3 に答える 3

15

すでに ID を持っていて、1 つまたは 2 つのフィールドを更新するだけでよい場合は、連絡先レコード全体をダウンロードする必要はありません。また、OrganizationServiceContext も必要ありません。Service だけです。次のようなものを試してください:

var c = new contact() {
  Id = targetEntity.Id,
  new_CustomField = "Updated"
}

service.Update(c);

これにより、最初に連絡先を照会する往復が節約されます。

于 2011-05-25T21:20:25.170 に答える
13

オブジェクトをサーバーに送信するには、オブジェクトを変更済みとしてマークする必要があります。OrganizationServiceContext.UpdateObject (エンティティ)を参照してください。

crmContext.UpdateObject(contact);前に追加する必要があります crmContext.SaveChanges();

于 2011-02-22T11:56:28.007 に答える
1

LINQ は問題ありません。新しいオブジェクトまたはリストを作成し、linq でリストをループして更新するだけです。

using (var crm = new XrmServiceContext(service)){
var foo = crm.nmipcs_productpriceitemSet
    .Where(ppis => ppis.nmipcs_Account.Id == account.Id).ToList();

foreach (var nmipcsProductpriceitem in foo){
    var f = new nmipcs_productpriceitem
    {
    Id = nmipcsProductpriceitem.Id                 
    ,
    nmipcs_PriceSalesChannel = (decimal) 9.99
    };

    service.Update(f);
}
    }
于 2012-03-22T20:02:09.920 に答える