gpt4 book ai didi

orchardcms - 如何从 Orchard 的后台任务更新内容项(草稿)?

转载 作者:行者123 更新时间:2023-12-01 05:24:22 29 4
gpt4 key购买 nike

我有一个简单的 IBackgroundTask执行查询然后根据特定项目是否存在执行插入或一个或多个更新的实现。但是,更新没有持久化,我不明白为什么。新项目按预期创建。

我正在更新的内容项有 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();
}

最佳答案

尝试添加 _contentManager.Publish(updatedPerson) .如果您不想发布,而只想保存,则无需再执行任何操作,因为除非环境事务中止,否则 Orchard 中的更改会自动保存。调用 Flush根本没有必要。在常规请求和后台任务期间都是这种情况。

关于orchardcms - 如何从 Orchard 的后台任务更新内容项(草稿)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14691748/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com