[ASP.NET Core] Tips
using Microsoft.AspNetCore.Http;
using Newtonsoft.Json;
public static class SessionExtensions
{
public static void Set<T>(this ISession session, string key, T value)
{
session.SetString(key, JsonConvert.SerializeObject(value));
}
public static T Get<T>(this ISession session,string key)
{
var value = session.GetString(key);
return value == null ? default(T) :
JsonConvert.DeserializeObject<T>(value);
}
}
分页
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.EntityFrameworkCore;
public class PaginatedList<T> : List<T>
{
public int PageIndex { get; private set; }
public int TotalPages { get; private set; }
public PaginatedList(List<T> items, int count, int pageIndex, int pageSize)
{
PageIndex = pageIndex;
TotalPages = (int)Math.Ceiling(count / (double)pageSize);
this.AddRange(items);
}
public bool HasPreviousPage
{
get
{
return (PageIndex > 1);
}
}
public bool HasNextPage
{
get
{
return (PageIndex < TotalPages);
}
}
public static async Task<PaginatedList<T>> CreateAsync(IQueryable<T> source, int pageIndex, int pageSize)
{
var count = await source.CountAsync();
var items = await source.Skip((pageIndex - 1) * pageSize).Take(pageSize).ToListAsync();
return new PaginatedList<T>(items, count, pageIndex, pageSize);
}
}
A CreateAsync method is used instead of a constructor to create the PaginatedList object because constructors can't run asynchronous code.
使用DbContext时的性能优化
对于仅需要显示或者删除数据的场景,可以添加AsNoTracking()来提升性能。
- 上一篇 »MVC Core 魅力 .NET:从 Mono、.NET Core 说起.NET Core 1.1 发布 文档下载资源汇总.NET Core Windows环境安装与体验MVC Core 网站开发,Ninesky 1、创建项目.NET Core系列 : 1、.NET Core 环境搭建和命令行CLI入门ASP.NET Core中使用Razor视图引擎渲染视图为字符串ASP.NET Core Loves JavaScript
- 下一篇 »Windows平台部署 Asp.Net Core 3.1.0,将 ASP.NET Core 应用发布到 IIS ,使用 IIS 在 Windows 上托管 ASP.NET Core