天天看点

asp.net core mvc 和webapi 使用EFCore 连接数据库及数据迁移的简便配置 (增删改查)

 // 创建MvcWEB项目

     创建Models Controllers Views文件夹 已有的不需添加

            //  1. 安装相关Nuget包

            //  a.  Install - Package Microsoft.EntityForameWorkCore    

            //  b . Sql Server Database Provider

            //      Install - Package Microsoft.EntityFrameworkCore.SqlServer

下面开始会有两种方式 创建 一种在添加控制器的时候自动生成,另一种自己设置生成配置及连接字符串

第一种:

 1 .在Models文件夹中添加MyDBContext.cs 上下文类

asp.net core mvc 和webapi 使用EFCore 连接数据库及数据迁移的简便配置 (增删改查)

  附代码:

 public class MyDBContext:DbContext

    {

        public DbSet<Book> Books { get; set; }

        public DbSet<Auther> Authers { get; set; }

        public MyDBContext(DbContextOptions<MyDBContext> options):base(options) {



        }

        //重写OnConfiguring方法,配置数据库连接(可选)

        //protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)

        //{

        //    optionsBuilder.UseSqlServer(@"Server=.;Database=BooksDB ;Trusted_Connection=True;");

        //}



    }

    public class Book {

        public int BookID { get; set; }

        public int AutherID { get;  set; }

        public string Name { get; set; }



        public DateTime DateTime { get; set; }



        public string Content { get; set; }

        public Auther Auther { get; set; }

       



    }
           

2 .在Startup.cs文件中注册添加上下文:

   public void ConfigureServices(IServiceCollection services)

            {

                services.Configure<CookiePolicyOptions>(options =>

                {

                    // This lambda determines whether user consent for non-essential cookies is needed for a given request.

                    options.CheckConsentNeeded = context => true;

                    options.MinimumSameSitePolicy = SameSiteMode.None;

                });

                services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);



                //dotnet add package Microsoft.EntityFrameworkCore.SqlServer (--version 2.2.4  可省略)

                var a = Configuration["Message"];

                var b = Configuration.GetConnectionString("Person:name");

                var c = Configuration.GetSection("Logging");

// 下面为添加注册连接服务

                services.AddDbContext<MyDBContext>(options => options.UseSqlServer(Configuration.GetConnectionString("DefaultStr")));

            }

           

3. 配置sppsettings.json文件的连接字符串

localdb的自带数据库

 "ConnectionStrings": {

"StudyCoreMvcContext": "Server=(localdb)\\mssqllocaldb;Database=StudyCoreMvcContext-ef441ba8-6874-4567-a570-89a7afbb147a;Trusted_Connection=True;MultipleActiveResultSets=true"

  }

  SQLserver连接

   "ConnectionStrings": {

"DefaultStr": "Server=.;Database=BooksDB;Trusted_Connection=True;"

  }
           

4 . 进行数据迁移:Migration

打开 VS 工具 - > NuGet软件包管理器 - >软件包管理器控制台

    创建模型的初始表 :输入命令 或者使用NuGet视图安装

    Add-Migration InitialCreate

   将新迁移应用于数据库

  Update-Database

系统会自动创建Migration  文件夹

或者使用 dotnet CLI 工具命令创建

在vs中右键项目-》在资源管理器中打开文件-》点击src路径文件夹-》找到对应的项目文件夹-》按住键盘Shift+鼠标右键项目文件夹-》选择在此处打开命令窗口,然后分别输入如下命令:

       dotnet ef migrations add Initial  

  dotnet ef database update

注意: 创建名称不同的多个DBContext时候需要添加如下参数 cmd 命令行执行dotnet ef migrations add Initial -c DemoDbContext

       如在原命令后加上代码-c DbContext的文件名,如下

       执行命令生成创建的文件

       dotnet ef migrations add Initial -c DemoDbContext

        执行命令生成数据库

       dotnet ef database update -c DemoDbContext

NuGet可视化视图界面安装会出现搜不到任务包资源 请注意更换源地址设置

 1.先检查vs2017Nuget中搜索看是否能搜索到EntityFrameWorkCore 搜索不到就需要配置Nuget数据源

地址:https://api.nuget.org/v3/index.json 并设置搜索选项选择第一个搜索

asp.net core mvc 和webapi 使用EFCore 连接数据库及数据迁移的简便配置 (增删改查)

命令执行完后生成目录:里面有创建数据表库的sql脚本

asp.net core mvc 和webapi 使用EFCore 连接数据库及数据迁移的简便配置 (增删改查)

5 .创建并打开Books控制器

CTOR 创建控制器构造函数中注入上下文

这里我们利用ASP.NET Core的依赖注入来获取数据库上下文。

        public readonly BooksDBContext myDBContext;

        public BooksController(BooksDBContext _myDBContext)

        {

            myDBContext = _myDBContext;

            //myDBContext = new MyDBContext();//不需要 不然得传参数op

        }

至此 以上第一种迁移连接数据库CodeFirst已经完成

第二种自动连接配置数据库方式 适用于WEBAPI  ASP.NETCORE MVC EF

  1. 在Models目录下创建BooksModels文件夹 并创建类Book.cs

随便添加几个属性:

  public class Book

    {

        public int Id { get; set; }

        public string Name { get; set; }

        public string Content { get; set; }

}

2 .在控制器中右键点击添加控制器:

asp.net core mvc 和webapi 使用EFCore 连接数据库及数据迁移的简便配置 (增删改查)

先添加红色的 模型就选Book.cs类

之后上下文新建一个点击添加 如图:

asp.net core mvc 和webapi 使用EFCore 连接数据库及数据迁移的简便配置 (增删改查)

如果连接字符串是已有数据库则直接可启动查看 因为新增的控制器中添加了Mvc的增删改查方法

asp.net core mvc 和webapi 使用EFCore 连接数据库及数据迁移的简便配置 (增删改查)

如果选择的是API控制器创建 则是WEB API的一套

如果配置的appsettings.json中连接字符串数据库及表不存在

则使用数据迁移命令 打开项目网站根目录进入cmd 执行以下命令:

   Add-Migration InitialCreate

   将新迁移应用于数据库

  Update-Database

系统会自动创建Migration  文件夹

则会自动创建数据库表字段

使用localDB vs自带的数据库则需要在Vs的视图 sqlserver视图资源管理器打开连接查看

往数据库表中添加几条数据测测 下面的是API

这是Books列表

asp.net core mvc 和webapi 使用EFCore 连接数据库及数据迁移的简便配置 (增删改查)

继续阅读