1 viewmodel.content.Hits += 1; 2 _context.Update(viewmodel.content); 3 await _context.SaveChangesAsync(); 4 if (languageid == 1) 5 { 6 viewmodel.content.ContentName = "英文名称"; 7 } 8 if (languageid == 2) 9 { 10 viewmodel.content.ContentName = "中文名称"; 11 } 12 View(viewmodel);
以上代码提交修改时有时正常
有时又会把 SaveChangesAsync 之后的变动也保存到数据库,不知道要怎么控制 谁有这方面的测试过吗
cacheKey = string.Format("content{0}", id);
if (!_memoryCache.TryGetValue(cacheKey, out viewmodel.content))
{
viewmodel.content = await _context.Contents.SingleOrDefaultAsync(c => c.ContentId == id);
if (viewmodel.content != null)
{
//是否启动缓存
if (_appSettings.CacheDbResults)
{
_memoryCache.Set(
cacheKey,
viewmodel.content,
new MemoryCacheEntryOptions()
.SetSlidingExpiration(TimeSpan.FromMinutes(10))
.SetPriority(CacheItemPriority.Low));
//_memoryCache.Set(cachekey, contents, TimeSpan.FromMinutes(1));
}
}
}有用到缓存
1._context 是不是共享的。不要做成共享的。
2.viewmodel.content 缓存的时候,不要缓存entity,因为带着 状态跟踪。缓存 poco
3.iewmodel.content.ContentName = "中文名称"; 11 } 。返回到view上请使用poco。
以上,能避免乱用导致的sb问题
不要缓存entity?缓存 poco? poco是什么
@DotNet-fans:
poco 指不带状态跟踪的实体