.net Core 2.1 MVC+EF+Redis搭建
搭建空MVC框架
1.创建一个空模板
2.创建文件夹 Controllers、Models、Views
3.在Controllers文件夹下创建HomeController.cs
选择Controllers文件夹,右键-添加-新建项,选择MVC控制器类,添加HomeController.cs。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc; namespace RazorMvc.Controllers
{
public class HomeController : Controller
{
// GET: Home
public ActionResult Index()
{
return View();
}
}
}
4.在Models文件夹下创建HomeModel.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks; namespace RazorMvc.Models
{
public class HomeModel
{
}
}
5.在Views文件夹中添加_Layout.cshtml
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>@ViewData["Title"]</title>
</head>
<body>
@RenderBody()
@RenderSection("Scripts", false)
</body>
</html>
6.在Views文件夹中添加_ViewStart.cshtml
@{
Layout = "~/Views/_Layout.cshtml";
}
7.在Views文件夹中添加_ViewImports.cshtml
@using 项目命名空间
@using 项目命名空间.Models
@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
8.调整Startup.cs
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc();//注册服务
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseExceptionHandler("/Home/Error");
app.UseHsts();
} app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseCookiePolicy();
app.UseSession(); app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{id?}");
});
}
9.调整完成后可保存为模板(可跳过,等后面完事一起存)
EF Core搭建
1.安装 EF Core
- 工具 > NuGet 包管理器 > 包管理器控制台
- 运行
Install-Package Microsoft.EntityFrameworkCore.SqlServer
- 运行
Install-Package Microsoft.EntityFrameworkCore.Tools
- 运行
Install-Package Microsoft.VisualStudio.Web.CodeGeneration.Design
- 听话全安了
2.从现有数据库创建模型
Scaffold-DbContext"Server=.;Database=test;uid=test;pwd=test;"Microsoft.EntityFrameworkCore.SqlServer-OutputDirModels
可以通过将-Tables
参数添加到上述命令来指定要为哪些表生成实体。 例如-Tables Blog,Post
。
3.删除内联上下文配置
- 打开
Models\BloggingContext.cs
- 删除
OnConfiguring(...)
方法
4.在 Startup.cs 中注册并配置上下文
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc(); var connection = @"Server=.;Database=test;uid=test;pwd=test;";
services.AddDbContext<testContext>(options => options.UseSqlServer(connection));
}
5.系统生成测试页面
- 在“解决方案资源管理器”中,右键单击“控制器”文件夹,然后选择“添加”->“控制器…”
- 选择“视图使用 Entity Framework 的 MVC 控制器”,然后单击“确定”
- 将“模型类”设置为“Test”,将“数据上下文类”设置为“TestContext”
- 单击“添加”
- 可运行起来测试数据库连接
使用Redis存储Session
//根据自己需要修改配置文件,此处直接https://www.cnblogs.com/shouwu/p/6180652.html,
1.添加nuget程序包
Microsoft.AspNetCore.Session;
Microsoft.AspNetCore.DataProtection.Redis;
Microsoft.Extensions.Caching.Redis.Core;
Microsoft.AspNetCore.Http; //使用Session时有扩展方法
Install-Package Microsoft.Extensions.Configuration
Install-Package Microsoft.Extensions.Configuration.Json
2.在appsettings.json中添加Redis配置
{
"Logging": {
"LogLevel": {
"Default": "Warning"
}
},
"AllowedHosts": "*",
"WebConfig": {
"Redis": {
"Connection": "ip:6379,allowAdmin=true,password=Test",
"InstanceName": "名称"
},
"SessionTimeOut": ""
}
}
3.在startup.cs类中,按如下例子添加代码
public IConfiguration Configuration { get; }
public Startup(IConfiguration configuration)
{
Configuration = configuration;
}
ConfigureServices() 增加
#region 使用Redis保存Session
var redisConn = Configuration["WebConfig:Redis:Connection"];
var redisInstanceName = Configuration["WebConfig:Redis:InstanceName"];
//Session 过期时长分钟
var sessionOutTime = Configuration.GetValue<int>("WebConfig:SessionTimeOut", ); var redis = StackExchange.Redis.ConnectionMultiplexer.Connect(redisConn);
services.AddDataProtection().PersistKeysToRedis(redis, "DataProtection-Test-Keys");
services.AddDistributedRedisCache(option =>
{
//redis 连接字符串
option.Configuration = redisConn;
//redis 实例名
option.InstanceName = redisInstanceName;
});
#endregion //添加Session并设置过期时长
services.AddSession(options => { options.IdleTimeout = TimeSpan.FromMinutes(sessionOutTime); });
Configure() 在app.UseMvc之前增加
app.UseSession();
Redis存储Session
HttpContext.Session.SetString("UserName", userName);
HttpContext.Session.GetString("UserName");
普通存储Redis
public IDistributedCache _RCache { get; set; }
public MyToolController(IDistributedCache RCache)
{
_RCache = RCache;
}
_RCache.SetString("UserName", UserName);
_RCache.GetString("UserName");
附加
- JS/CSS 压缩
Install-Package YUICompressor.NET
- JS压缩
JavaScriptCompressor jsCompressor = new JavaScriptCompressor
{
//使用utf-8 编码文件
Encoding = Encoding.UTF8
};
jsCompressor.Compress(str); - Css压缩
CssCompressor cssCompressor = new CssCompressor();
cssCompressor.Compress(str); - 安装结束后包数量,无任何参考价值hhh
.net Core 2.1 MVC+EF+Redis搭建的更多相关文章
- .net core Asp.net Mvc Ef 网站搭建 vs2017 1)
1)开发环境搭建 首先下载安装vs2017 地址 :https://www.visualstudio.com/zh-hans/downloads/ 安装勾选几项如下图 ,注意点在单个组件时.net ...
- MVC MVC+EF快速搭建
MVC+EF快速搭建 一.准备: vs2017(个人用的) 二.开始MVC+EF之旅吧: 1.创建mvc项目: Web-ASP.NET Web Application(.NET Framework) ...
- C# MVC+EF—结构搭建
近期做了MVC+EF的项目,现在项目完结了,抽个时间写个小DOM总结一下,顺便加深理解. 一.新建MVC项目,结构是这样的
- C# MVC+EF—页面搭建
上一篇文章搭建了基本结构,现在来搭建页面 一.新建控制器 Controllers=>添加=>控制器=>MVC 5控制器=>命名为DepartmentController pub ...
- 国产化之路-统信UOS + Nginx + Asp.Net MVC + EF Core 3.1 + 达梦DM8实现简单增删改查操作
专题目录 国产化之路-统信UOS操作系统安装 国产化之路-国产操作系统安装.net core 3.1 sdk 国产化之路-安装WEB服务器 国产化之路-安装达梦DM8数据库 国产化之路-统信UOS + ...
- ASP.NET MVC+EF框架+EasyUI实现权限管理系列(14)-主框架搭建
原文:ASP.NET MVC+EF框架+EasyUI实现权限管理系列(14)-主框架搭建 ASP.NET MVC+EF框架+EasyUI实现权限管系列 (开篇) (1):框架搭建 (2 ...
- ASP.NET MVC+EF框架+EasyUI实现权限管理系列(1)-框架搭建
原文:ASP.NET MVC+EF框架+EasyUI实现权限管理系列(1)-框架搭建 ASP.NET MVC+EF框架+EasyUI实现权限管系列 (开篇) 前言:这篇博客开始我们便一步一步的来实现这 ...
- List多个字段标识过滤 IIS发布.net core mvc web站点 ASP.NET Core 实战:构建带有版本控制的 API 接口 ASP.NET Core 实战:使用 ASP.NET Core Web API 和 Vue.js 搭建前后端分离项目 Using AutoFac
List多个字段标识过滤 class Program{ public static void Main(string[] args) { List<T> list = new List& ...
- 转载——Asp.Net MVC+EF+三层架构的完整搭建过程
转载http://www.cnblogs.com/zzqvq/p/5816091.html Asp.Net MVC+EF+三层架构的完整搭建过程 架构图: 使用的数据库: 一张公司的员工信息表,测试数 ...
随机推荐
- HTTP Status 404(The requested resource is not available)
这个问题之前在部署项目工程的时候经常遇见,今天我大致总结下出现这样的原因: 1.首先想到的是没有部署项目,但是你却在访问这个,这种不是很常见(对于老手). 2.其次是URL输入错误: 排错方法: 首先 ...
- 小程序获取openId
1.小程序获取微信openId wx.login({ success: res => { // 发送 res.code 到后台换取 openId, sessionKey, unionId / ...
- Redis 配置和使用
Redis的配置 由于Django是动态网站,所有每次请求均会去数据进行相应的操作,当程序访问量大时,耗时必然会更加明显,最简单解决方式是使用:缓存,缓存将一个某个views的返回值保存至内存或者me ...
- 基于卡方的独立性检验原理及R语言实现
在读到<R语言实战>(第二版)P143页有关卡方独立性检验所记 假设检验 假设检验(Test of Hypothesis)又称为显著性检验(Test of Ststistical Sign ...
- 2018年长沙理工大学第十三届程序设计竞赛 G 逃离迷宫 【BFS】
链接:https://www.nowcoder.com/acm/contest/96/G 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语言65536 ...
- Kattis - yoda 【字符串】
分析 给出两个串 从末尾开始对齐 每位对齐后,每一位 遍历 如果 第一串 的那位 < 第二串 的 那么 第一串的那位 就删去 如果 等于 两位 都保留 如果 大于 那么 保留 第二串的 那位 如 ...
- Hadoop Pig
Pig包括两部分: 用于描述数据流的语言,称为Pig Latin. 用于执行Pig Latin程序的执行环境,当前有两个环境:单JVM中的本地执行环境和Hadoop集群上的分布式执行环境. Pig内部 ...
- 【leetcode刷题笔记】Decode Ways
A message containing letters from A-Z is being encoded to numbers using the following mapping: 'A' - ...
- 【leetcode刷题笔记】Same Tree
Given two binary trees, write a function to check if they are equal or not. Two binary trees are con ...
- 【Flask】下载多个文件
使用zipfile模块可以将多个文件打包成zip文件进行下载,但是常规的操作方式会在服务器磁盘上生成一个zip文件占用磁盘空间. 后引入BytesIO将文件写入到内存中然后下载: def dl_pla ...