Здравствуйте. Недавно сделал небольшой проект на базе ASP.NET Web API 2. На клиентской части использую Angular. Проект представляет из себя небольшой блог.
Пост имеет поле ViewCount.
Как реализовать подсчет количества просмотров поста? И чтобы при перезапуске (F5), счетчик не увеличивался.
Возможно есть готовый кусок кода или советы по реализации?
Спасибо всем кто отзовется.
Посидев подумав немного я решил использовать следующую реализацию данного функционала.
Снизу приведен пример менеджера, который отвечает за установку/вывод количества просмотров поста (лота):
public class LotViewesManager: EntitiesManager
{
public async Task<int> GetLotViewersCountAsync(Guid lotId)
{
var lot = await GetByIdAsync<Lot>(lotId);
if (lot != null)
{
var lotViewes = await GetListAsync(
filters: new List<Expression<Func<LotViewes, bool>>>
{
x => x.LotId == lot.Id
});
return lotViewes.First().ViewersIds.Count;
}
throw new InvalidInputParameterException();
}
public async Task UpdateLotViewesAsync(Guid lotId, Guid viewerId)
{
var lot = await GetByIdAsync<Lot>(lotId);
if (lot != null)
{
var lotViewes = await GetListAsync(
filters: new List<Expression<Func<LotViewes, bool>>>
{
x => x.LotId == lot.Id
});
lotViewes.First().ViewersIds.Add(viewerId);
await Save(lotViewes.First());
return;
}
throw new InvalidInputParameterException();
}
public async Task SaveAsync(LotViewes lotViewes)
{
await Save(lotViewes);
}
}
Сама сущность, которая сохраняет все в БД:
public class LotViewes : Entity
{
public Guid LotId { get; set; }
public List<Guid> ViewersIds { get; set; }
public LotViewes()
{
ViewersIds = new List<Guid>();
}
}
Спасибо всем за советы =)
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
В приложении на C#, с использованием библиотеки Gmapnet необходимо построить маршрут между двумя точками
Здравствуйте, есть следующий простой пример Smtp клиента с отправкой тестового письма: