刷新页面后会显示旧的CRM数据

mm3*_*058 5 .net c# linq asp.net-mvc dynamics-crm

我正在构建简单的ASP.NET MVC网页,显示所有活动帐户MS Dynamics CRM.

如果我编译并运行(使用F5),基本上页面运行良好.当我转到Microsoft Dynamics CRM网页,登录然后将一个帐户状态从活动更改为非活动时出现问题.现在,当我刷新我正在构建的页面时,我得到了相同的旧结果.

我尝试刷新(F5),硬刷新(Ctrl + F5),xrm在返回视图之前处理对象,但没有任何效果.所以我觉得我误解了一些事情.

控制器/ HomeControler.cs

public ActionResult Index()
{
    using (var xrm = new XrmServiceContext("Xrm"))
    {
        var accounts = from a in xrm.AccountSet
                       where a.StateCode == 0
                       select a;

        List<AccountModel> accountModels = new List<AccountModel>();

        foreach (var account in accounts)
        {
            Debug.WriteLine(c+"\t"+account.Id+"\t"+account.Name);
            Debug.WriteLine(account.Address1_Composite);
            accountModels.Add(new AccountModel(
                account.Id.ToString(),
                account.Name,
                account.Address1_Composite));
        }

        ViewBag.Title = "Page Title";
        ViewBag.AccountModels = accountModels;
    }
    return View();
}
Run Code Online (Sandbox Code Playgroud)

查看/主页/ Index.cshtml

@{
    Layout = @"~/Views/Shared/_Layout.cshtml";
}

<div class="table-responsive">
    <table class="table table-bordered table-condensed table-hover">
        <caption><h2>Active Accounts</h2></caption>
        <thead>
            <tr>
                <th>Account ID</th>
                <th>Account Name</th>
                <th>Account Address</th>
            </tr>
        </thead>
        <tbody>
            @{
                foreach (var accountModel in ViewBag.AccountModels)
                {
                    <tr>
                        <td>@accountModel.Id</td>
                        <td>@accountModel.Name</td>
                        <td>@accountModel.Address</td>
                    </tr>
                }
            }
        </tbody>
    </table>
</div>
Run Code Online (Sandbox Code Playgroud)

编辑: 现在我注意到只有在"重建并运行"之后才刷新网站.这是IIS Express(我在本地做这个)错吗?

Thi*_*ers 2

在 web.config 中为 XRM 上下文配置的内容非常重要。默认情况下,该服务使用 实例化CachedOrganizationService,顾名思义,它会缓存所有数据。

要禁用缓存,请使用以下配置(将 替换Xrm.XrmServiceContext, Xrm为您自己的 ServiceContext):

<microsoft.xrm.client>
  <contexts>
   <!-- Replace with your actual ServiceContext -->
   <add name="Xrm" type="Xrm.XrmServiceContext, Xrm" serviceName="Xrm" instanceMode="PerRequest"/>
  </contexts>
  <services>
   <!-- Disable cache -->
   <add name="Xrm" type="Microsoft.Xrm.Client.Services.OrganizationService, Microsoft.Xrm.Client"/>
  </services>
</microsoft.xrm.client>
Run Code Online (Sandbox Code Playgroud)

有关默认配置的详细信息,请查看MSDN 上的开发人员扩展上下文对象模型