欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

使用EF Core+CodeFirst建立ASP.NET Core MVC项目

程序员文章站 2022-04-29 14:21:22
本篇随笔介绍如何使用.NET Core+EF Core创建Web应用程序 首先借用官网的话简单介绍一下ASP.NET Core ASP.NET Core 是一个跨平台的高性能开源框架,用于生成基于云且连接 Internet 的新式应用程序。 使用 ASP.NET Core可以: 创建 Web 应用程 ......

本篇随笔介绍如何使用.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应用程序,点击确定

使用EF Core+CodeFirst建立ASP.NET Core MVC项目

2、选择.net core、asp.net core2.2,选择web应用程序(模型视图控制器)即mvc,暂时不进行身份验证,点击确定

使用EF Core+CodeFirst建立ASP.NET Core MVC项目

得到如下解决方案:

使用EF Core+CodeFirst建立ASP.NET Core MVC项目

3、使用工具→nuget包管理→程序包管理控制台添加ef依赖

  在nuget官网找到microsoft.entityframeworkcore包           

     网址:https://www.nuget.org/packages/microsoft.entityframeworkcore

     使用EF Core+CodeFirst建立ASP.NET Core MVC项目

      

     

    然后在程序包管理控制台中输入  install-package microsoft.entityframeworkcore -version 2.2.4 点击回车

     使用EF Core+CodeFirst建立ASP.NET Core MVC项目

     在依赖项nuget中出现microsoft.entityframeworkcore(2.2.4)包说明添加ef依赖成功。

    使用EF Core+CodeFirst建立ASP.NET Core MVC项目

    也可直接在项目工程文件(*.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

     使用EF Core+CodeFirst建立ASP.NET Core MVC项目

     迁移成功,生成文件migrations(可删除)

     使用EF Core+CodeFirst建立ASP.NET Core MVC项目

     继续输入创建数据库命令update-database向其应用新的迁移

pm> update-database

     使用EF Core+CodeFirst建立ASP.NET Core MVC项目

     创建数据库成功,此时sqlserver2012中已存在数据库testdb

     使用EF Core+CodeFirst建立ASP.NET Core MVC项目

备注:1、生成数据库时会生成迁移历史表__efmigrationshistory,请勿删除。

           2、在需要修改数据库字段时,切记不要直接在数据库修改,可在模型类中修改后运行update-database命令进行修改。

至此,使用ef core+codefirst建立asp.net core mvc项目介绍完毕,在学习和使用过程中我遇到了很多坑,本文是我在操作相对熟练以及熟悉其基本原理后所写,适合初学者参考,如有不足之处欢迎大家留言评论!