DataServiceContext
プロキシ経由でOData Webservice () を呼び出す Web アプリがあります。問題は、コードが毎回 OData Web サービスを呼び出しても、コンテンツ管理システム (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;
}
}
最新のデータ変更を確認するには、apppool をリセットする必要がありました。
それで、さらにデバッグしているときに、私はそれに気づきました
var context = (System.Data.Services.Client.DataServiceContext)cdService;
context.Entities[0].State = Unchanged
.Detach()
から値を返す前に明示的に呼び出して修正しようとしたgetPageContentForUrl
ので、
cdService.Detach(page);
cdService.Detach(page.PageContent);
私の質問は、より「グローバル」レベルで上記を実行できますか?コードを手動で書きたくないので、Web サービスに状態を常に「変更済み」と見なさせることができますDetach()
か?