src/SSCMS.Core/Repositories/ContentRepository.Utils.cs
(完整代码) 1KBusing System.Collections.Concurrent;
using System.Collections.Generic;
using System.Threading.Tasks;
using Datory;
using SqlKata;
using SSCMS.Core.Utils;
using SSCMS.Models;
namespace SSCMS.Core.Repositories
{
public partial class ContentRepository
{
private const int TaxisIsTopStartValue = 2000000000;
private static readonly ConcurrentDictionary<string, Repository<Content>> TableNameRepositories = new ConcurrentDictionary<string, Repository<Content>>();
private async Task<Repository<Content>> GetRepositoryAsync(Site site, IChannelSummary channel)
{
var tableName = _channelRepository.GetTableName(site, channel);
return await GetRepositoryAsync(tableName);
}
private async Task<Repository<Content>> GetRepositoryAsync(string tableName)
{
if (TableNameRepositories.TryGetValue(tableName, out var repository))
{
return repository;
}
repository = new Repository<Content>(_settingsManager.Database, tableName, _settingsManager.Redis);
await repository.LoadTableColumnsAsync(tableName);
TableNameRepositories[tableName] = repository;
return repository;
}
private Query GetQuery(int siteId, int channelId = 0)
{
return GetQuery(Q.NewQuery(), siteId, channelId);
}
private Query GetQuery(Query query, int siteId, int channelId = 0)
{
if (query == null)
{
query = Q.NewQuery();
}
query
.Where(nameof(Content.SiteId), siteId)
.WhereNot(nameof(Content.SourceId), SourceManager.Preview);
if (channelId > 0)
{
query.Where(nameof(Content.ChannelId), channelId);
}
return query;
}
}
}
24 小时内免费解锁 3 个项目,之后 1 积分/个。 规则说明
AI 解读
登录后可用,每次 10 积分,解读结果公开显示在下面。
还没有人解读过这个文件。
