使用EF Core+CodeFirst建立ASP.NET Core MVC项目
本篇随笔介绍如何使用.net core+ef core创建web应用程序
首先借用官网的话简单介绍一下asp.net core
asp.net core 是一个跨平台的高性能开源框架,用于生成基于云且连接 internet 的新式应用程序。 使用 asp.net core可以:
- 创建 web 应用程序和服务、iot 应用和移动后端。
- 在 windows、macos 和 linux 上使用喜爱的开发工具。
- 部署到云或本地。
- 在 .net core 或 .net framework上运行。
我的开发工具:visual studio2017、sqlserver2012
我的开发环境:.net core2.2
接下来介绍使用visual studio2017创建web项目,步骤如下:
1、选择.net core→asp.net core web应用程序,点击确定
2、选择.net core、asp.net core2.2,选择web应用程序(模型视图控制器)即mvc,暂时不进行身份验证,点击确定
得到如下解决方案:
3、使用工具→nuget包管理→程序包管理控制台添加ef依赖
在nuget官网找到microsoft.entityframeworkcore包
网址:https://www.nuget.org/packages/microsoft.entityframeworkcore
然后在程序包管理控制台中输入 install-package microsoft.entityframeworkcore -version 2.2.4 点击回车
在依赖项nuget中出现microsoft.entityframeworkcore(2.2.4)包说明添加ef依赖成功。
也可直接在项目工程文件(*.csproj)中添加如下代码达到添加ef依赖的目的
<itemgroup> <packagereference include="microsoft.entityframeworkcore" version="2.2.4" /> </itemgroup>
4、创建数据库上下文和模型类
在解决方案下新建.net core类库dal(同样记得添加ef依赖),在dal中新建数据库上下文(mydatacontext)和模型类(userinfo),代码如下:
using system.componentmodel.dataannotations; using system.componentmodel.dataannotations.schema; namespace dal { public class userinfo { [key] [databasegenerated(databasegeneratedoption.identity)] [required(errormessage = "不能为空")] [display(name = "用户id")] public int uid { get; set; } [required(errormessage = "不能为空")] [display(name = "用户名")] public string uname { get; set; } [required(errormessage = "不能为空")] [stringlength(50, errormessage = "长度不能超过50")] [display(name = "密码")] public string upws { get; set; } [required(errormessage = "不能为空")] [regularexpression(@"[a-za-z0-9._%+-]+@[a-za-z0-9]+\.[a-za-z]{2,4}", errormessage = "邮箱格式错误")] [display(name = "邮箱")] public string uemail { get; set; } [required(errormessage = "不能为空")] [stringlength(11, errormessage = "长度不能超过11")] [display(name = "联系方式")] public string utel { get; set; } } }
using microsoft.entityframeworkcore; namespace dal { public class mydatacontext : dbcontext { public mydatacontext(dbcontextoptions<mydatacontext> options) : base(options) { } public dbset<userinfo> userinfo { get; set; } protected override void onconfiguring(dbcontextoptionsbuilder optionsbuilder) { base.onconfiguring(optionsbuilder); } protected override void onmodelcreating(modelbuilder modelbuilder) { base.onmodelcreating(modelbuilder); } } }
备注:数据库上下文是为数据模型协调 entity framework 功能的主类 。 此类由 microsoft.entityframeworkcore.dbcontext
类派生而来。
5、在startup.cs中注册数据库上下文
在 asp.net core 中,服务(如数据库上下文)必须向依赖关系注入(di)容器进行注册。 该容器向控制器提供服务。
在startup.cs的configureservices()方法中添加如下代码:
var connection = "data source=.;initial catalog=testdb;user id=sa;password=svse;"; services.adddbcontext<mydatacontext>(options => options.usesqlserver(connection, b => b.migrationsassembly("testcore")));
备注:1、在项目运行时,会首先执行configureservices()方法。
2、连接数据库的字符串connection可配置在appsettings.json文件中,在此暂不做介绍。
6、使用程序包管理器控制台命令生成数据库
打开程序包管理器控制台选择默认项目后 输入数据迁移命令:add-migration elen (elen随意输入)
pm> add-migration elen
迁移成功,生成文件migrations(可删除)
继续输入创建数据库命令update-database
向其应用新的迁移
pm> update-database
创建数据库成功,此时sqlserver2012中已存在数据库testdb
备注:1、生成数据库时会生成迁移历史表__efmigrationshistory,请勿删除。
2、在需要修改数据库字段时,切记不要直接在数据库修改,可在模型类中修改后运行update-database命令进行修改。
至此,使用ef core+codefirst建立asp.net core mvc项目介绍完毕,在学习和使用过程中我遇到了很多坑,本文是我在操作相对熟练以及熟悉其基本原理后所写,适合初学者参考,如有不足之处欢迎大家留言评论!
推荐阅读
-
使用Asp.Net Core MVC 开发项目实践[第一篇:项目结构说明]
-
使用Asp.Net Core MVC 开发项目实践[第四篇:基于EF Core的扩展2]
-
使用Asp.Net Core MVC 开发项目实践[第五篇:缓存的使用]
-
使用EF Core+CodeFirst建立ASP.NET Core MVC项目
-
使用EF Core+CodeFirst建立ASP.NET Core MVC项目
-
使用Asp.Net Core MVC 开发项目实践[第一篇:项目结构说明]
-
使用Asp.Net Core MVC 开发项目实践[第四篇:基于EF Core的扩展2]
-
使用Asp.Net Core MVC 开发项目实践[第五篇:缓存的使用]