1

我们计划使用 CRM 2011 的审计功能来跟踪谁更改了几个实体的哪个内场。但是,如果您通过 更新实体会发生什么IOrganizationService

例如,假设您的系统中有一个带有City="London"and的地址实体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 回答