MS CRM 2011:通过IOrganizationService Webservice进行审计功能和更新

时间:2011-03-15 16:57:16

标签: dynamics-crm-2011

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

例如,假设您的系统中有一个带有City="London"Street="Baker Street"的地址实体。现在,在您的代码中,您将为此地址创建一个实体对象(后期绑定)。您设置了GUID,City="London",但Street="Downing Street"!现在,您为此实体调用IOrganizationService.Update。 审计部门是否会意识到街道已经改变但是纽约市还没有改变?或者他会告诉我,城市已被改变,而事实上并非如此?

1 个答案:

答案 0 :(得分: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);

希望这有帮助。
乔治