如何在没有管理视图的情况下将设置记录保存在orchard中

本文关键字:记录 设置 保存 存在 orchard 情况下 视图 管理 | 更新日期: 2023-09-27 18:03:39

我有一个设置记录,一些字段通过管理面板得到维护。但是,我正在实现数据导入,并且需要跟踪上一次导入发生的时间。因此,我将该字段添加到设置记录中,并创建了一个导入数据的控制器。现在,我的问题是,如何更新设置?我已经创建了一个服务,但是不知道如何强制orchard保存值。

public class BmobileSettingsService : IBmobileSettingsService
{
    IOrchardServices _svc;
    public BmobileSettingsService(IOrchardServices svc)
    {
        _svc = svc
    }
    public BmobileSettingsPart Get()
    {
        return _svc.WorkContext.CurrentSite.As<BmobileSettingsPart>();
    }
    public void Save(BmobileSettingsPart part)
    {
        /// how do I save the data?
    }

下面是我在使用存储库时使用的代码:

public class BmobileSettingsService : IBmobileSettingsService
{
    IOrchardServices _svc;
    IRepository<BmobileSettingsPartRecord> _repository;
    public BmobileSettingsService(IOrchardServices svc,IRepository<BmobileSettingsPartRecord> repository)
    {
        _svc = svc;
        _repository = repository;
    }
    public BmobileSettingsPartRecord Get()
    {
        return _repository.Table.FirstOrDefault();
        //return _svc.WorkContext.CurrentSite.As<BmobileSettingsPart>();
    }
    public void Save(BmobileSettingsPartRecord part)
    {
        _repository.Update(part);
        _repository.Flush();
    }
}

下面是对服务的调用:

                // update the last imported date
                var rec = _bmobileSettings.Get();
                rec.LastImageSyncDate = DateTime.Today;
                _bmobileSettings.Save(rec);

数据只是没有被持久化到数据库。

如何在没有管理视图的情况下将设置记录保存在orchard中

我相信Bertrand Le Roy在评论中已经回答了这个问题。
我认为你不需要强迫任何事情。

这是一个允许用户使用Orchard 1.8注册的例子:

var site = _siteService.GetSiteSettings();
var regsettings = site.As<RegistrationSettingsPart>();
regsettings.UsersCanRegister = true;

设置值后不需要调用任何方法。
也就是说,如果你的部分有一个记录,你可以使用IRepository并对其调用update。在旧版本的Orchard中有一些bug,在IRepository上调用Update可以强制更新。但是,如果您使用的是最新版本的Orchard,那么这不应该是必需的,并且可能会导致错误报告。