我有一個簡單的IBackgroundTask
執行,執行一個查詢,然後執行一個插入或一個或多個更新,具體取決於特定項目是否存在。但是,更新不是持久的,我不明白爲什麼。 新項目按預期創建。如何從Orchard的後臺任務更新內容項目(草稿)?
我正在更新的內容項目有一個CommonPart
,我嘗試作爲有效用戶進行身份驗證。我也嘗試在Sweep
方法的末尾清空內容管理器。我錯過了什麼?
這是我Sweep
,略加編輯爲簡潔:
public void Sweep()
{
// Authenticate as the site's super user
var superUser = _membershipService.GetUser(_orchardServices.WorkContext.CurrentSite.SuperUser);
_authenticationService.SetAuthenticatedUserForRequest(superUser);
// Create a dummy "Person" content item
var item = _contentManager.New("Person");
var person = item.As<PersonPart>();
if (person == null)
{
return;
}
person.ExternalId = Random.Next(1, 10).ToString();
person.FirstName = GenerateFirstName();
person.LastName = GenerateLastName();
// Check if the person already exists
var matchingPersons = _contentManager
.Query<PersonPart, PersonRecord>(VersionOptions.AllVersions)
.Where(record => record.ExternalId == person.ExternalId)
.List().ToArray();
if (!matchingPersons.Any())
{
// Insert new person and quit
_contentManager.Create(item, VersionOptions.Draft);
return;
}
// There are at least one matching person, update it
foreach (var updatedPerson in matchingPersons)
{
updatedPerson.FirstName = person.FirstName;
updatedPerson.LastName = person.LastName;
}
_contentManager.Flush();
}
app_data \ logs中的任何異常? –
沒有。這個日期有一個錯誤的.log文件,但它是空的。 –