1

CRM 2011 の監査機能を使用して、2 つのエンティティについて誰がどのインフィールドを変更したかを追跡する予定です。しかし、を介してエンティティを更新するとどうなりますIOrganizationServiceか?

たとえば、システムに と を含むアドレス エンティティがあるとしCity="London"ますStreet="Baker Street"。コードで、このアドレスのエンティティ オブジェクト (レイト バインド) を作成します。GUID を設定しましCity="London"たが、Street="Downing Street"! IOrganizationService.Update次に、このエンティティを呼び出します。監査機能は、通りが変更されたが市が変更されていないことを認識しますか? それとも、実際には変更されていないのに、シティが変更されたと彼は私に言いますか?

4

1 に答える 1

3

監査、更新メッセージの一部として送信された変更されていないフィールドを取得します。たとえば、次のコードでは、送信された値がデータベース内の値と同じであっても、lastname 属性の変更が監査レコードに記録されます。言い換えれば、監査はメッセージ レベルで実行され、値をデータベースと実際に比較することはありません (これは、非常にコストのかかる作業になると理解しています)。

var connection = CrmConnection.Parse("Url=http://localhost/acme;");
var service = new OrganizationService(connection);

// create new entity
Entity e = new Entity("contact");
e["firstname"] = "Foo";
e["lastname"] = "Bar";
Guid id = service.Create(e);

// change just the first name and submit unchanged last name as well
e = new Entity("contact");
e["contactid"] = id;
e["firstname"] = "FooChanged";
e["lastname"] = "Bar";
service.Update(e);

// remove the entity
service.Delete("contact", id);

お役に立てれば。
ジョージ

于 2011-03-31T02:11:42.543 に答える