Sie müssen die RetrieveMetadataChangesRequest verwenden und es ist nicht möglich zu wissen, wer die Änderung vorgenommen hat.
Dies ist nur verfügbar, von Microsoft Dynamics CRM 2011 Update Rollup 12
Diese Anforderung soll verwendet werden, um Informationen aus den Metadaten cachen und be able to work offline, aber wir können es verwenden, um Änderungen an Metadaten in komplexen verfolgen
Projekte und komplexe Teams
Beispiele im Internet sind nicht sehr freundlich, so ist dies, wie Sie die Anforderung verwenden können:
die Anforderung nur mit dem Füllen eines Parameters
012.351.641 abgeschlossen werden kann
RetrieveMetadataChangesRequest req = new RetrieveMetadataChangesRequest()
{
ClientVersionStamp = null
};
var response = (RetrieveMetadataChangesResponse)service.Execute(req);
Das erste Mal, wenn Sie diese Anforderung ausgeführt ClientVersionStamp
null sein muss, weil es keine Anfrage vor den Metadaten vorgenommen wurde und es gibt keine ClientVersionStamp
. Dieser Parameter ist das letzte Mal, wenn Sie nach Metadatenänderungen fragen. Wenn er null ist, werden alle Anpassungen von Zeit zu Zeit vorgenommen. Daher wird diese Anfrage wahrscheinlich nicht rechtzeitig abgeschlossen, so dass wir sie abstimmen müssen.
var EntityFilter = new MetadataFilterExpression(LogicalOperator.And);
EntityFilter.Conditions.Add(new MetadataConditionExpression("SchemaName", MetadataConditionOperator.Equals, "ServiceAppointment"));
var entityQueryExpression = new EntityQueryExpression()
{
Criteria = EntityFilter
};
RetrieveMetadataChangesRequest req = new RetrieveMetadataChangesRequest()
{
Query = entityQueryExpression,
ClientVersionStamp = null
};
var response = (RetrieveMetadataChangesResponse)service.Execute(req);
Dadurch werden alle Änderungen von Metadaten für „ServiceAppointment“ abfragen, fühlen sich frei, um die Einheit zu verwenden, die Sie wollen, aber was wir brauchen, ist die ServerTimeStamp aus der Antwort, es wird aussehen wie "22319800!09/13/2017 16:17:46"
, wenn Sie versuchen, dies zu senden Zeitstempel zuerst, wird es eine Ausnahme auslösen, so ist es notwendig, zuerst abzufragen, um einen Server-Zeitstempel zu erhalten.
Jetzt können Sie die Anfrage und den Zeitstempel verwenden, um alle neuen Änderungen seit "22319800!09/13/2017 16:17:46"
RetrieveMetadataChangesRequest req = new RetrieveMetadataChangesRequest()
{
Query = entityQueryExpression,
ClientVersionStamp = @"22319800!09/13/2017 16:17:46"
};
var response = (RetrieveMetadataChangesResponse)service.Execute(req);
abrufen
Sie können die Abfrage filtern Ihre Bedürfnisse anzupassen, suchen nur für bestimmte Einheiten, Etiketten, Beziehung, Schlüssel und Attribute oder spezifische Eigenschaften.
EntityQueryExpression entityQueryExpression = new EntityQueryExpression()
{
Criteria = EntityFilter,
Properties = EntityProperties,
RelationshipQuery = new RelationshipQueryExpression()
{
Properties = RelationshipProperties,
Criteria = RelationshipFilter
},
AttributeQuery = new AttributeQueryExpression()
{
Properties = AttributeProperties,
Criteria = AttributeFilter
}
};
Verwenden Sie diese Anforderung und implementieren Sie sie wie Sie benötigen.
Mögliche Duplikat [Ist es möglich, Schemaänderungsinformationen in Dynamics CRM Online abrufen?] (Https://stackoverflow.com/questions/41575510/is-it-possible-to-retrieve-schema-change -Information-in-dynamics-crm-online) –
@ArunVinoth das ist eine spezifische Frage und nicht sehr klar, ich habe für eine Weile gesucht und niemand könnte sehr klar sein, dies zu beantworten, nicht einmal die offizielle Dokumentation, Sie Gerne können Sie zu meiner Antwort beitragen. – Sxntk
sicher, wenn meine Antwort hilfreich war, upvote es. –