zoukankan      html  css  js  c++  java
  • EntityFramewok Core 1.1连接MSSql数据库详解

      最近在研究ASP.NET Core,其中就用到了Entity Framework Core,对于Entity Framework Core连接SqlServer数据库,使用Code Frist创建数据库,更新数据库做一个记录。

          开发工具:VS2017 RC

      Net Core版本:1.1

          EF版本:1.1

    一 创建项目

      打开VS2017 RC,新建项目,选择ASP.NET Core Web应用程序,填写项目名称,解决方案名称,选择保存位置,下一步

      

      然后选择ASP.NET Core 1.1,Web应用程序,身份验证选择不进行身份验证,点击确定

      

      然后右击解决方案,选择添加一个.NET Core类库,我们命名为EntityFramework

      

    二  在FY.EntityFramework中添加相关依赖项

      在FY.EntityFramework中添加依赖项添加 Microsoft.EntityFrameworkCore.SqlServer 和  Microsoft.EntityFrameworkCore.Tools

      右击FY.EntityFramework,选择管理NuGet程序包,在打开的页面中浏览中搜索以上两个依赖项,并安装

      

      

      如果你用的是VS2015的话,还可以通过另外一种方式添加依赖项,即直接再project.json文件中添加依赖项,但是我使用的VS2017构建的项目,项目中没有这个文件了,而是回归了以前的.csproj文件,现在我也没有查到在这个文件怎么添加以来项,是直接添加?还是什么?希望有知道的朋友告知一声!

      如果你使用的PostgreSQL,在这个地方,你要添加的依赖项是

       

    • Npgsql.EntityFrameworkCore.PostgreSQL

          PostgreSQL数据提供的支持EF Core的基础类库,是通过EF Core使用PostgreSQL数据库的根本。

    • Npgsql.EntityFrameworkCore.PostgreSQL.Design

          使用Guid(对应Postgre数据的类型为uuid)类型的主键必须,int/long类型的主键不添加也没问题。

    • Microsoft.EntityFrameworkCore.Tools

          EF Core工具,CodeFirst数据库迁移相关操作必须。

    三 编写配置文件

      在FY.EntityFramework中添加一个简单的User实体类,我们简单的模拟一下数据

      

    1 namespace FY.EntityFramework
    2 {
    3     public class User
    4     {
    5         public int Id { get; set; }
    6         public string UserName { get; set; }
    7         public string Password { get; set; }
    8     }
    9 }

      然后定义一个上下文操作类,命名为"APPDbContext",继承自DbContext

     1 using System.Collections.Generic;
     2 using System.IO;
     3 using System.Linq;
     4 using System.Text;
     5 
     6 namespace FY.EntityFramework
     7 {
     8     public class APPDbContext:DbContext
     9     {
    10         public APPDbContext(DbContextOptions<APPDbContext> options):base(options)
    11         {
    12 
    13         }
    14         public DbSet<User> User { get; set; }
    15 
    16         protected override void OnModelCreating(ModelBuilder modelBuilder)
    17         {
    18             base.OnModelCreating(modelBuilder);
    19         }
    20     }
    21 }

      在FY.Web中的appsettings.json中添加数据库连接字符串

     1 {
     2   "ConnectionStrings": {
     3     "SqlServerConnection": "Server=.;Database=dbCore;User ID=sa;Password=sa123sa;"
     4   },
     5   "Logging": {
     6     "IncludeScopes": false,
     7     "LogLevel": {
     8       "Default": "Warning"
     9     }
    10   }
    11 }

      在startup.cs中的ConfigureServices方法中,获取数据库连接字符串,并添加数据库连接服务

      

    1         public void ConfigureServices(IServiceCollection services)
    2         {
    3             var sqlConnection = Configuration.GetConnectionString("SqlServerConnection");
    4             services.AddDbContext<APPDbContext>(option => option.UseSqlServer(sqlConnection));
    5             services.AddMvc();
    6         }

    注意:这个地方一定要添加

     1 using Microsoft.EntityFrameworkCore; 

    否则option => option.UseSqlServer(sqlConnection)这个地方报错,当时我在这个地方折腾了好久。

    四 添加数据库迁移文件并创建数据库

      点击工具->NuGet包管理器->程序包管理器控制台

      注意:如果你的Powershell版本为2.0的话,需要将其升级到3.0或者4.0

      将默认项目选择为FY.EntityFramework

      在程序包管理器控制台中输入Add-Migration Migrations

      

      待执行完毕后,在FY.EntityFramework项目下会添加Migrations的文件夹,下面包含三个文件

      

      然后执行Update-Database,待执行完成后,查看数据库,发现数据库及表以及创建完成。

      除了使用程序控制台这种方式添加数据库外,还有一种方式,即使用dotnet命令,但是这种方式我没有执行成功,原因是使用EF Core1.1的时候,当使用dotnet ef 命令的命令的时候,需要

    添加Microsoft.EntityFrameworkCore.Tools.DotNet,但是会提示the package type “DotnetCLITool” is not supported,原因是.NET Core CLI命令(dotnet ef)目前不能在.NET Core Tools MSBuild Alpha中使用。

     五 总结

      至此我们使用EF Core 1.1 创建好了数据库,其实PostgreSQL数据库也是这样创建,不同的是连接字符串和添加的依赖项。

      吐槽自己一句,我发现自己真的不适合写文章,惰性太大,但是记性又不好,所以强迫自己写一下这类的文章,避免自己再忘记,也可以记录一下自己踩的坑。好了,就到这吧,下个文章再见!!!

      

  • 相关阅读:
    EF深入系列--细节
    EF深入系列--Code First
    WebApi深入学习--特性路由
    转:asp.net TreeView CheckChanged 事件浅谈
    Entity Framework 中的in操作实例
    解决IE8 内置JSON.stringify,中文变unicode的问题
    解决SQL Server的cannot resolve the collation conflict问题
    sqlserver 解析Json字符串
    EF性能调优
    IIS 发布mvc 403.14
  • 原文地址:https://www.cnblogs.com/jt880807/p/6390190.html
Copyright © 2011-2022 走看看