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数据库也是这样创建,不同的是连接字符串和添加的依赖项。

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

  

时间: 02-10

EntityFramewok Core 1.1连接MSSql数据库详解的相关文章

Java连接SQLite数据库详解【转】

1 package com.hedalixin; 2 import java.sql.Connection; 3 import java.sql.DriverManager; 4 import java.sql.ResultSet; 5 import java.sql.Statement; 6 7 /** 8 * @author Chrome 9 * 10 */ 11 public class JavaSqlite { 12 13 /** 14 * @param args 15 */ 16 pu

JAVA通过JDBC连接Oracle数据库详解【转载】

JAVA通过JDBC连接Oracle数据库详解 (2011-03-15 00:10:03) 转载▼http://blog.sina.com.cn/s/blog_61da86dd0100q27w.html Java连接Oracle步骤: 1.注册加载驱动 驱动名:DRIVER="oracle.jdbc.driver.OracleDriver"; Class.forName("驱动类名"); 2.获得连接 数据库地址: URL="jdbc:oracle:thi

C#连接Access数据库(详解)

做一个用VS2012的C#连接Access数据库的备忘, SQL数据库固然强大,有大微软的强力技术支持,LINQ的方便操作,但是如果写一个小程序对数据库方面没有什么大的要求的话,将来在数据库方面就可以选择使用access数据库,这样就能省去一定的开支. 首先,我们建一个数据库,因为大家使用的office版本不同,有用2000的有用2003的还有用 2007或者2010的.我用的是2007,但是无论用哪个版本请把建的数据库建为.mdb结尾的2003版本的不要建 .accdb结尾的. 建一个表,请先

PHP连接MSSQL数据库的方法,PHPWAMP如何连接MSSQL数据库(极度详细)

最近有用户在使用PHPWAMP的时候,向我咨询一个问题,就是关于PHP如何连接MSSQL数据库. 平时我们搭建网站通常是PHP+Mysql数据库, 不过在项目中,我们有时候必须要用到PHP+MSSQL数据库,那应该怎么办呢? 其实你平时只要多逛逛微软的网站,多看看数据库相关的英文文档,该有的都有, 好了,我们下面演示几个案例吧,分别演示几个主流PHP版本连接MSSQL数据库的方法. 本文演示的是我自己制作的PHP纯绿色集成环境,要是你用的是其他集成环境,或者是自己独立安装的,其实道理是一样的,没

PHP连接MSSQL数据库案例,PHPWAMP多个PHP版本连接SQL Server数据库

课前小知识普及:MSSQL和SQL Server是同一个软件,叫法不同而已,MSSQL全称是Microsoft SQL Server,MSSQL是简写,有些人则喜欢直接叫SQL Server,我就比较喜欢这种叫法,有韵味... 最近有用户在使用PHPWAMP的时候,向我咨询一个问题,就是关于PHP如何连接MSSQL数据库. 平时我们搭建网站通常是PHP+Mysql数据库, 不过在项目中,我们有时候必须要用到PHP+MSSQL数据库,那应该怎么办呢? 本文案例采用的PHP集成环境是我最新发布的版本

走向DBA[MSSQL篇] 详解游标

原文:走向DBA[MSSQL篇] 详解游标 前篇回顾:上一篇虫子介绍了一些不常用的数据过滤方式,本篇详细介绍下游标. 概念 简单点说游标的作用就是存储一个结果集,并根据语法将这个结果集的数据逐条处理. 观点 正因为游标可以将结果集一条条取出处理,所以会增加服务器的负担.再者使用游标的效率远远没有使用默认的结果集效率高,在默认结果集中,从客户端发送到服务器的唯一一个数据包是包含需执行语句的数据包.而在使用服务器游标时,每一个FETCH语句都必须从客户端发送到服务器,然后在服务器中将它解析并编译为执

Oracle 11g数据库详解(2015-1-18更新)

Oracle 11g数据库详解 整理者:高压锅 QQ:280604597 Email:[email protected] 大家有什么不明白的地方,或者想要详细了解的地方可以联系我,我会认真回复的 1   简介 数据库操作主要有以下几步: 1.  启动.停止数据库 2.  连接.断开数据库 3.  创建.修改.删除数据库用户 4.  表空间 5.  新建.修改.删除表 6.  查询.插入.修改.删除表数据 7.  新建.修改.删除视图 8.  新建.修改.删除存储过程 9.  新建.修改.删除触发

Oracle 11g数据库详解(2015-02-28更新)

Oracle 11g数据库详解 整理者:高压锅 QQ:280604597 Email:[email protected] 大家有什么不明白的地方,或者想要详细了解的地方可以联系我,我会认真回复的 1   简介 数据库操作主要有以下几步: 1.  启动.停止数据库 2.  连接.断开数据库 3.  创建.修改.删除数据库用户 4.  表空间 5.  新建.修改.删除表 6.  查询.插入.修改.删除表数据 7.  新建.修改.删除视图 8.  新建.修改.删除存储过程 9.  新建.修改.删除触发

Android开发之SQLite数据库详解

Android开发之SQLite数据库详解 请尊重他人的劳动成果,转载请注明出处:Android开发之SQLite数据库详解 http://blog.csdn.net/fengyuzhengfan/article/details/40194393 Android系统集成了一个轻量级的数据库:SQLite, SQLite并不想成为像Oracle.MySQL那样的专业数据库.SQLite只是一个嵌入式的数据库引擎,专门适用于资源有限的设备上(如手机.PDA等)适量数据存取. 虽然SQLite支持绝大