许久没用C#写程序。听说进来发生大事,.NetCore2.0发布了,于是便学习了下,本站也应运而生。

大多数的地方按照官方的文档起步走就可以了,这里谈谈遇到的几个坑。

首先,本站是基于ASP.NetCore2.0和EntityFrameWorkCore.Sqlite的,前端使用了layui,搭建于CentOS7上。

ASP.NetCore部分没有什么难度,选择MVC方式,基本上和原来的asp.net mvc差不多。不过我也是很久没有用过mvc了,所以摸索了一下,tagHelper很好用。

主要说说EFC,目前是EFC2.0,不支持延迟查询,所以每一个表关联查询需要Include()。然后表关联上也不能用多对多,不过多对多的地方可以加中间类来解决。

比如一篇文章有多个分类,而一个分类也有多篇文章。这里用到了多对多的关联,所以我增加了一个中间关联的类型,包含文章和分类的ID。用两个一对多的关联,规避了多对多的关联。

EF还有一个控制台命令 dotnet ef

使.NetCore2.0网站项目支持EF.Sqlite

1)添加appsettings.json,并配置sqlite的连接字符串

"sqlitedb": "Filename=./sqlitedb.db"

注意appsettings.json添加完之后设置属性为复制到输出目录

2)在Startup中启用服务

添加引用:

using Microsoft.Extensions.Configuration;

using Microsoft.EntityFrameworkCore;

添加属性:

public IConfiguration Configuration { get; set; }

添加构造:

       public Startup()

        {

            var builder = new ConfigurationBuilder()

               .AddJsonFile("appsettings.json");

            Configuration = builder.Build();

        }

在ConfigureServices()启用:

var connection = Configuration.GetConnectionString("sqlitedb");

services.AddDbContextPool<DataContext>(options => options.UseSqlite(connection));

此时缺少DataContext类,新建之在Data文件夹下

支持Identity

1)编辑DataContext

添加引用:

using Microsoft.AspNetCore.Identity.EntityFrameworkCore;

using Microsoft.EntityFrameworkCore;

继承IdentityDbContext<User>

添加非默认构造函数:

   public DataContext(DbContextOptions<DataContext> options)

            : base(options)

        {

        }

2)此时缺少User类,新建之在Model文件夹下,并继承自IdentityUser

在User类中添加引用:

using Microsoft.AspNetCore.Identity;

3)在Startup类中

ConfigureServices()里启动服务:

    services.AddMvc();

    services.AddIdentity<User, IdentityRole>().AddEntityFrameworkStores<DataContext>().AddDefaultTokenProviders();

在Pipeline的Configure()函数中进行身份验证:

app.UseAuthentication();

此后可以在Controller里使用[Authorize]标签验证登录身份了

使用EF工具生成数据库结构

1)右键编辑项目文件csproj

在ItemGroup中添加

<DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="2.0.0" />

2)打开项目所在目录,按住shift后右键呼出菜单打开命令行

在命令行中输入:

dotnet ef migrations add InitialCreate

名称可替换

如果遇到错误,请分析错误原因

之后会在项目下生成一个Migrations文件包含了数据库结构相关代码

输入下面命令并回车,使之生效:

dotnet ef database update

然后就会出现appsettings.json中配置的数据库文件.

用asp.net core 2.0 + EFCore.Sqlite做个小网站的更多相关文章

  1. .Net Core 2.0生态(3):ASP.NET Core 2.0 特性介绍和使用指南

    ASP.NET Core 2.0 发布日期:2017年8月14日 ASP.NET团队宣布ASP.NET Core 2.0正式发布,发布Visual Studio 2017 15.3支持ASP.NET ...

  2. 从头编写 asp.net core 2.0 web api 基础框架 (3)

    第一部分:http://www.cnblogs.com/cgzl/p/7637250.html 第二部分:http://www.cnblogs.com/cgzl/p/7640077.html 之前我介 ...

  3. 【转载】从头编写 asp.net core 2.0 web api 基础框架 (3)

    Github源码地址:https://github.com/solenovex/Building-asp.net-core-2-web-api-starter-template-from-scratc ...

  4. 从头编写 asp.net core 2.0 web api 基础框架 (4) EF配置

    第1部分:http://www.cnblogs.com/cgzl/p/7637250.html 第2部分:http://www.cnblogs.com/cgzl/p/7640077.html 第3部分 ...

  5. 【转载】从头编写 asp.net core 2.0 web api 基础框架 (4) EF配置

    Github源码地址:https://github.com/solenovex/Building-asp.net-core-2-web-api-starter-template-from-scratc ...

  6. 【原生态跨平台:ASP.NET Core 1.0(非Mono)在 Ubuntu 14.04 服务器上一对一的配置实现-篇幅1】

    鸡冻人心的2016,微软高产年. build 2016后 各种干货层出不穷. 1 Win10 集成了bash  ,实现了纳德拉的成诺,Microsoft Love Linux!!! 2 跨平台  ,收 ...

  7. Amazing ASP.NET Core 2.0

    前言 ASP.NET Core 的变化和发展速度是飞快的,当你发现你还没有掌握 ASP.NET Core 1.0 的时候, 2.0 已经快要发布了,目前 2.0 处于 Preview 1 版本,意味着 ...

  8. Asp.Net Core 2.0 项目实战(10) 基于cookie登录授权认证并实现前台会员、后台管理员同时登录

    1.登录的实现 登录功能实现起来有哪些常用的方式,大家首先想到的肯定是cookie或session或cookie+session,当然还有其他模式,今天主要探讨一下在Asp.net core 2.0下 ...

  9. ASP.NET Core 2.0 MVC项目实战

    一.前言 毕业后入职现在的公司快有一个月了,公司主要的产品用的是C/S架构,再加上自己现在还在学习维护很老的delphi项目,还是有很多不情愿的.之前实习时主要是做.NET的B/S架构的项目,主要还是 ...

随机推荐

  1. AVL树C++实现

    1. AVL 树本质上还是一棵二叉搜索树,它的特点是: 本身首先是一棵二叉搜索树. 带有平衡条件: 每个结点的左右子树的高度之差的绝对值(平衡因子) 最多为 1. 2. 数据结构定义 AVL树节点类: ...

  2. MySQL】存储过程、游标、循环简单实例

    create procedure my_procedure() -- 创建存储过程 begin -- 开始存储过程 declare my_id varchar(32); -- 自定义变量1 decla ...

  3. memCachedClient 客户端调用时注意的问题,坑

    // 第三个参数为计算该消息在服务器存放位置用 memCachedClient.add("someKey", "someValue", 10*24*60*60* ...

  4. 一个CSV文件解析类

    import java.io.BufferedReader; import java.io.FileReader; import java.util.ArrayList; import java.ut ...

  5. Android SDK目录结构

    Android版本下载:从4.0到8.0版本: Android SDK目录结构图: sdk全称:software develop kits 软件开发工具集 add-ons:Google API map ...

  6. Android 显示确认对话框

      AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setTitle("你确定要退出吗?" ...

  7. TFS 2017 培训 - 北京某银行科技部Java研发团队

    今天受邀和微软公司的朋友一起,为北京某银行科技部的两个Java研发团队做了一场TFS系统的技术培训. 按照需求分析>开发>编译>发布>测试的流程为研发团队做了全流程的介绍. 这 ...

  8. JS 中的数据类型转换

    转成字符串 String 1. 使用 toString方法 这种方法可以将 number, boolean, object,array,function 转化为字符串,但是无法转换 null, und ...

  9. ssh 登陆 端口转发

    man ssh ssh [-1246AaCfgKkMNnqsTtVvXxYy] [-b bind_address] [-c cipher_spec] [-D [bind_address:]port] ...

  10. firebug中html显示为灰色的原因总结

    1.被设置了display:none. 2.长.宽都为0.