我有DataServiceContext
一个通过代理调用 OData Webservice () 的 Web 应用程序。问题是代码,即使每次调用 OData webservice,它总是在内容管理系统 (SDL Tridion) 中更改内容后返回旧数据。
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;
}
}
我们必须重置应用程序池才能看到最新的数据更改。
因此,在进行更多调试时,我注意到
var context = (System.Data.Services.Client.DataServiceContext)cdService;
context.Entities[0].State = Unchanged
.Detach()
所以我尝试通过在从返回值之前显式调用来修复它,getPageContentForUrl
比如,
cdService.Detach(page);
cdService.Detach(page.PageContent);
我的问题是,我可以在更“全局”的级别上执行上述操作吗,也许 Web 服务总是假设状态为“已更改”,因为我不想手动编写代码Detach()
?