在nopCommerce_4.10执行插入操作后,会同时执行清理缓存操作。
1、修改Service.Configuration.SettingService类中的InsertSetting方法为:
/// <summary>
/// 【插入设置】
/// <param name="setting">一个设置实体实例</param>
/// <param name="clearCache">指示在设置更新之后是否清除缓存,默认值--true;不查找--flase;查找--ture。</param>
/// <remarks>
/// 摘要:
/// 插入一个指定设置实体实例到数据库相应的表中。
/// </remarks>
/// </summary>
public virtual void InsertSetting(Setting setting, bool clearCache = true)
{
_settingRepository.Insert(setting);
//缓存。
if (clearCache)
_cacheManager.RemoveByPattern(NopConfigurationDefaults.SettingsPatternCacheKey);
//事件通知
_eventPublisher.EntityInserted(setting);
}
2、修改Service.Configuration.SettingService类中的拷贝构造方法方法为:
/// <summary>
/// 【拷贝构造方法】
/// <param name="eventPublisher">事件发布实例。</param>
/// <param name="settingRepository">设置仓储实例。</param>
/// <param name="cacheManager">静态缓存管理器实例。</param>
/// <remarks>
/// 摘要:
/// 对该类中的一些对象的实例,进行初始化操作。
/// </remarks>
/// </summary>
public SettingService(IEventPublisher eventPublisher, IRepository<Setting> settingRepository, IStaticCacheManager cacheManager)
{
this._eventPublisher = eventPublisher;
this._settingRepository = settingRepository;
this._cacheManager = cacheManager;
}
3、在Service.Configuration.SettingService类中添加以下变量定义:
/// <summary>
/// 【静态缓存管理器实例】
/// <remarks>
/// 摘要:
/// 该保护变量,它被声明后,并被拷贝构造方法初始化。
/// </remarks>
/// </summary>
private readonly IStaticCacheManager _cacheManager;
4、添加NopConfigurationDefaults定义最终效果如图1-13:
图1-13
5、添加Caching定义最终效果如图1-14:
图1-14
6、在Framework.Infrastructure.DependencyRegistrar.Register方法中添加以下定义语句:
//缓存
//每分请求缓存管理器
builder.RegisterType<PerRequestCacheManager>().As<ICacheManager>().InstancePerLifetimeScope();
//静态缓存管理器
if (config.RedisCachingEnabled)
{
builder.RegisterType<RedisConnectionWrapper>()
.As<ILocker>()
.As<IRedisConnectionWrapper>()
.SingleInstance();
builder.RegisterType<RedisCacheManager>().As<IStaticCacheManager>().InstancePerLifetimeScope();
}
else
{
builder.RegisterType<MemoryCacheManager>()
.As<ILocker>()
.As<IStaticCacheManager>()
.SingleInstance();
}
7、按F5执行程序, 到此为止事件发布已经完成,至于更新详细的信息请见我所上传代码“MyNopCommerce(不删,006_清理缓存)。 (https://download.csdn.net/download/zhoujian_911/10805268)”中的“日志”与“.vsdx”文件。