跟着微软学ASP.NET Core(三) -使用EF框架与身份验证创建CRUD页面
这篇文章主要是在 通过现有数据库在 ASP.NET Core 上开始使用 EF Core 和 通过现有数据库在 ASP.NET Core 上开始使用 EF Core 这两篇文章作为基础的,可以先读完这两篇文章并做完文章的步骤再来看看。
好了,我们现在开始。
在创建项目的时候,我们会使用身份验证。
在右边的“Change Authentication” 选择个人身份验证。这样一来,我们的网站就默认有了身份验证功能了,如果这时候我们在网站上面使用注册、登陆的功能的话,网站会自动建立用于身份验证的数据库,但是,因为自己的数据库已经有了数据了,所以我希望可以使用我自己的数据库。
这时候,我们在VS的服务器资源管理器增加我们的数据库文件(有时会失败,因为数据库文件和数据库还在连接,把数据库文件从数据库分离就好。)
然后右键数据库,在属性窗口复制数据库的连接字符串。我们通过这个连接字符串来连接EF框架来对数据进行操作。
然后实施EF的反向工程:
Scaffold-DbContext "Server=(localdb)\mssqllocaldb;Database=Blogging;Trusted_Connection=True;" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models
把这一段“Server=(localdb)\mssqllocaldb;Database=Blogging;Trusted_Connection=True;"替换为我们的连接字符串
不过记住,数据库的表中要有主键,不然生成会失败。
好了,之后我们在Startup.cs 中注册并配置上下文
using EFGetStarted.AspNetCore.ExistingDb.Models;
引用我们的models,请注意,这里是“项目名称.Models”的模式,每个人都不同。
然后找到ConfigureServices(...)方法,增加这一句话
(这里要是按照下面来输入BloggingContext、NewsTablesContext的上下文类是不存在的,可以先通跳过这一步,先创建CRUD框架再执行修改)
var connection = @"Server=(localdb)\mssqllocaldb;Database=Blogging;Trusted_Connection=True;ConnectRetryCount=0";
services.AddDbContext<BloggingContext>(options => options.UseSqlServer(connection));
另一种方法,可以使用配置文件
services.AddDbContext<NewsTablesContext>(options => options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));
建立完成后,我们可以省事地使用自带的CRUD框架来实现页面。
在解决方案资源管理器中,右键单击“Controllers”文件夹 >“添加”>“新搭建基架的项目”。
在“添加基架”对话框中,点击“包含视图的 MVC 控制器(使用 Entity Framework)”>“添加”。
填写“添加控制器”对话框:
- 模型类:你要创建的模型
- 数据上下文类:用于EF框架与数据库进行操作,你自己起名字,注意要和上面的配置文件中的类如”BloggingContext“这里就是BloggingContext,”NewsContext“这里就是”NewsContext“。
- 视图:将每个选项保持为默认选中状态
- 控制器名称:保留默认的 MoviesController
- 点击“添加”
然后就点运行,并移动到页面进行测试吧。
完
ps 输入中文会有乱码,修改页面的编码方式。