本篇随笔介绍如何使用.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(, 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(, 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文件中,在此暂不做介绍。

3、"TestCore"为配置此上下文维护迁移的程序集

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项目介绍完毕,在学习和使用过程中我遇到了很多坑,本文是我在操作相对熟练以及熟悉其基本原理后所写,适合初学者参考,如有不足之处欢迎大家留言评论!

使用EF Core+CodeFirst建立ASP.NET Core MVC项目的更多相关文章

  1. ASP.NET Core 使用 EF 框架查询数据 - ASP.NET Core 基础教程 - 简单教程,简单编程

    原文:ASP.NET Core 使用 EF 框架查询数据 - ASP.NET Core 基础教程 - 简单教程,简单编程 ASP.NET Core 使用 EF 框架查询数据 上一章节我们学习了如何设置 ...

  2. Orchard Core Framework:ASP.NET Core 模块化,多租户框架

    Orchard Core Framework:ASP.NET Core 模块化,多租户框架 上一篇编写Orchard Core一分钟搭建ASP.NET Core CMS ,介绍ASP.NET Core ...

  3. ASP.NET Core Identity 配置 - ASP.NET Core 基础教程 - 简单教程,简单编程

    原文:ASP.NET Core Identity 配置 - ASP.NET Core 基础教程 - 简单教程,简单编程 ASP.NET Core Identity 配置 上一章节我们简单介绍了下 Id ...

  4. ASP.NET Core Identity 框架 - ASP.NET Core 基础教程 - 简单教程,简单编程

    原文:ASP.NET Core Identity 框架 - ASP.NET Core 基础教程 - 简单教程,简单编程 ASP.NET Core Identity 框架 前面我们使用了 N 多个章节, ...

  5. ASP.NET Core 数据库上下文 - ASP.NET Core 基础教程 - 简单教程,简单编程

    原文:ASP.NET Core 数据库上下文 - ASP.NET Core 基础教程 - 简单教程,简单编程 ASP.NET Core 数据库上下文 上一章节中我们了解了 Entity Framewo ...

  6. ASP.NET Core 新增用户 - ASP.NET Core 基础教程 - 简单教程,简单编程

    原文:ASP.NET Core 新增用户 - ASP.NET Core 基础教程 - 简单教程,简单编程 ASP.NET Core 新增用户 上一章节我们实现了一个注册表单,但也留了一些东西还没完成, ...

  7. ASP.NET Core 动作结果 - ASP.NET Core 基础教程 - 简单教程,简单编程

    原文:ASP.NET Core 动作结果 - ASP.NET Core 基础教程 - 简单教程,简单编程 ASP.NET Core 动作结果 前面的章节中,我们一直使用简单的 C# 类作为控制器. 虽 ...

  8. ASP.NET Core 属性路由 - ASP.NET Core 基础教程 - 简单教程,简单编程

    原文:ASP.NET Core 属性路由 - ASP.NET Core 基础教程 - 简单教程,简单编程 ASP.NET Core 属性路由 经过前面章节的学习,想必你已经对 ASP.NET Core ...

  9. ASP.NET Core 静态文件 - ASP.NET Core 基础教程 - 简单教程,简单编程

    原文:ASP.NET Core 静态文件 - ASP.NET Core 基础教程 - 简单教程,简单编程 ASP.NET Core 静态文件 前几章节中,我们学习了 ASP.NET Core 的中间件 ...

随机推荐

  1. 网络编程 UDP协议 TCP局域网客户端与服务端上传下载电影示例

    UDP协议 (了解) 称之为数据包协议,又称不可靠协议. 特点: 1) 不需要建立链接. 2) 不需要知道对方是否收到. 3) 数据不安全 4) 传输速度快 5)能支持并发 6) 不会粘包 7) 无需 ...

  2. matlab-fsolve函数求解多元非线性方程

    记录一下代码,方便下次套用模板 options=optimset('MaxFunEvals',1e4,'MaxIter',1e4); [x,fval,exitflag] = fsolve(@(x) m ...

  3. zzulioj - 2558 数字的差值

    首先感谢抱抱熊dalao的题解,提供了一种比较简单的思路.[抱抱熊dalao的题解](https://note.youdao.com/ynoteshare1/index.html?id=52f087d ...

  4. java 补充(final、static)

    final 固定的 final  修饰类的时候,只能作为子类继承,不能作为父类. final 定义变量时,必须给成员变量赋值.------  1.直接赋值  2.构造方法. final 修饰成员方法时 ...

  5. 关于Exgcd

    %%lkx 学习博客 exgcd(扩展欧几里得) 可以用来判断并求解形如\(ax+by=c\)的方程,当且仅当\(gcd(a,b)|c\)时,存在整数解\(x,y\) 也就是说,\(exgcd\)可以 ...

  6. SDSC 2018 day2解题报告

    目录 10.12考试总结 T1 最近公共祖先 错误原因 T2 即时战略 T3 欧皇 10.12考试总结 T1 最近公共祖先 预估得分: 100 实际得分: 20 最大得分: 100 用时:1小时10分 ...

  7. pacemaker和keepalived的区别

    1.pacemaker Pacemaker 是一款开源的高可用资源管理软件,适合大集群或者小集群. Pacemaker 由Novell支持,SLES HAE就是用Pacemaker来管理集群,并且Pa ...

  8. List 拆分集合与 读写XML配置文件

    有时候会出现需要将一个集合分成所干个集合,依次再对每组集合进行处理,想了想,用 Linq 处理就很方便 ); ).Take(); //第一组 ).Take(); //第二组 ; i < time ...

  9. 运维(SA)修仙 之路

    运维(SA)修仙 之路: 大纲: 系统 ,网络 ,数据库,开发 系统 :linux(cent OS && ubuntu)  网络 :路由,防火墙,安全  数据库:mysql, mong ...

  10. Kubernetes集群之清除集群

    清除K8s集群的Etcd集群 操作服务器为:192.168.1.175/192.168.1.176/192.168.1.177,即etcd集群的三台服务器.以下以192.168.1.175为例子. 暂 ...