用asp.net core 2.0 + EFCore.Sqlite做个小网站

简介: 许久没用C#写程序。听说进来发生大事,.NetCore2.0发布了,于是便学习了下,本站也应运而生。 大多数的地方按照官方的文档起步走就可以了,这里谈谈遇到的几个坑。 首先,本站是基于ASP.NetCore2.0和EntityFrameWorkCore.Sqlite的,前端使用了layui,搭建于CentOS7上。

许久没用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中配置的数据库文件.

目录
相关文章
|
5天前
|
开发框架 NoSQL .NET
利用分布式锁在ASP.NET Core中实现防抖
【9月更文挑战第5天】在 ASP.NET Core 中,可通过分布式锁实现防抖功能,仅处理连续相同请求中的首个请求,其余请求返回 204 No Content,直至锁释放。具体步骤包括:安装分布式锁库如 `StackExchange.Redis`;创建分布式锁服务接口及其实现;构建防抖中间件;并在 `Startup.cs` 中注册相关服务和中间件。这一机制有效避免了短时间内重复操作的问题。
|
4天前
|
SQL 关系型数据库 数据库
七天.NET 8操作SQLite入门到实战详细教程(选型、开发、发布、部署)
七天.NET 8操作SQLite入门到实战详细教程(选型、开发、发布、部署)
|
15天前
|
开发框架 监控 .NET
开发者的革新利器:ASP.NET Core实战指南,构建未来Web应用的高效之道
【8月更文挑战第28天】本文探讨了如何利用ASP.NET Core构建高效、可扩展的Web应用。ASP.NET Core是一个开源、跨平台的框架,具有依赖注入、配置管理等特性。文章详细介绍了项目结构规划、依赖注入配置、中间件使用及性能优化方法,并讨论了安全性、可扩展性以及容器化的重要性。通过这些技术要点,开发者能够快速构建出符合现代Web应用需求的应用程序。
28 0
|
15天前
|
缓存 数据库连接 API
Entity Framework Core——.NET 领域的 ORM 利器,深度剖析其最佳实践之路
【8月更文挑战第28天】在软件开发领域,高效的数据访问与管理至关重要。Entity Framework Core(EF Core)作为一款强大的对象关系映射(ORM)工具,在 .NET 开发中扮演着重要角色。本文通过在线书店应用案例,展示了 EF Core 的核心特性和优势。我们定义了 `Book` 实体类及其属性,并通过 `BookStoreContext` 数据库上下文配置了数据库连接。EF Core 提供了简洁的 API,支持数据的查询、插入、更新和删除操作。
34 0
|
18天前
|
开发框架 监控 .NET
【Azure 应用程序见解】在Docker中运行的ASP.NET Core应用如何开启Application Insights的Profiler Trace呢?
【Azure 应用程序见解】在Docker中运行的ASP.NET Core应用如何开启Application Insights的Profiler Trace呢?
|
18天前
|
Linux C# C++
【Azure App Service For Container】创建ASP.NET Core Blazor项目并打包为Linux镜像发布到Azure应用服务
【Azure App Service For Container】创建ASP.NET Core Blazor项目并打包为Linux镜像发布到Azure应用服务
|
5天前
|
开发框架 前端开发 JavaScript
ASP.NET MVC 教程
ASP.NET 是一个使用 HTML、CSS、JavaScript 和服务器脚本创建网页和网站的开发框架。
16 7
|
3天前
|
存储 开发框架 前端开发
ASP.NET MVC 迅速集成 SignalR
ASP.NET MVC 迅速集成 SignalR
12 0
|
27天前
|
开发框架 前端开发 .NET
ASP.NET MVC WebApi 接口返回 JOSN 日期格式化 date format
ASP.NET MVC WebApi 接口返回 JOSN 日期格式化 date format
29 0
|
27天前
|
开发框架 前端开发 安全
ASP.NET MVC 如何使用 Form Authentication?
ASP.NET MVC 如何使用 Form Authentication?