我有一个web应用程序,通过代理调用OData Web服务( DataServiceContext )。问题是,即使代码每次调用OData Web服务,但在内容管理系统(SDL Tridion)更改内容后,它始终返回旧数据。
<code>string getPageContentForUrl(string url)
{
var page = cdService
.Pages
.Expand("PageContent")
.Where(x => x.Url == url)
.FirstOrDefault();
if (page == null || page.PageContent == null)
{
return string.Empty;
}
else
{
return page.PageContent.Content;
}
}
</code>
我们不得不重置应用程序池才能看到最新的数据更改。
所以在更多调试时,我注意到:
var context = (System.Data.Services.Client.DataServiceContext)cdService;
context.Entities[0].State = Unchanged
所以我尝试在从getPageContentForUrl
返回值之前显式调用.Detach()
来修复它,像这样:
cdService.Detach(page);
cdService.Detach(page.PageContent);
我的问题是,我是否可以在更“全局”的层面上实现以上操作,也许让Web服务始终将状态假定为“已更改”,因为我不想手动编写Detach()
代码?