CRM 2013:使用Microsoft.Xrm从组织服务获取数据

时间:2014-05-30 16:36:30

标签: c# soap crm xrm

我正在尝试使用Organization.svc和C#

获取数据

此代码在第一次运行时成功获取数据。 然而,当我再次调用它时,它再次被调用,数据几乎瞬间完成。

我禁用了我的互联网连接,发现它仍在获取数据。

我不确定我的数据是否在本地缓存,但它肯定不是来自我的CRM服务器。

第一次通话后,如何获取实际数据?

    // CONSTANTS DEFINED UP HERE 
    // (SERVICE_URI, USERNAME, PASSWORD, TIME_ENTITY_NAME,GUID, TIME_QTY)
    //

    static void Main(string[] args)
    {
        while (true)
        {
            CrmConnection connection = new CrmConnection();
            connection.ServiceUri = new Uri(SERVICE_URI);
            connection.ClientCredentials = new System.ServiceModel.Description.ClientCredentials();
            connection.ClientCredentials.UserName.UserName = USERNAME;
            connection.ClientCredentials.UserName.Password = PASSWORD;
            using (CrmOrganizationServiceContext context = new CrmOrganizationServiceContext(connection))
            {

                try
                {
                    Entity entity = context.Retrieve(TIME_ENTITY_NAME, GUID, new ColumnSet(TIME_QTY));

                    Console.WriteLine(entity.Attributes[TIME_QTY]);
                }
                catch (Exception e)
                {
                    Console.WriteLine( e.Message);
                }
            }
            Console.ReadKey();
            Console.WriteLine("\n");
        }

1 个答案:

答案 0 :(得分:1)

我明白了。我不得不仔细看看我创建的 Crm OrganizationServiceContext 对象。

我不得不从缓存中删除实体。

try { 
    Entity entity = context.Retrieve(TIME_ENTITY_NAME, GUID, new ColumnSet(TIME_QTY));
    context.TryRemoveFromCache(entity); // <- This fixed the cache issue.
    Console.WriteLine(entity.Attributes[TIME_QTY]); 
}