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
一 创建项目
然后选择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实体类,我们简单的模拟一下数据
namespace FY.EntityFramework
{
public class User
{
public int Id { get; set; }
public string UserName { get; set; }
public string Password { get; set; }
}
}
然后定义一个上下文操作类,命名为"APPDbContext",继承自DbContext
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text; namespace FY.EntityFramework
{
public class APPDbContext:DbContext
{
public APPDbContext(DbContextOptions<APPDbContext> options):base(options)
{ }
public DbSet<User> User { get; set; } protected override void OnModelCreating(ModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
}
}
}
在FY.Web中的appsettings.json中添加数据库连接字符串
{
"ConnectionStrings": {
"SqlServerConnection": "Server=.;Database=dbCore;User ID=sa;Password=sa123sa;"
},
"Logging": {
"IncludeScopes": false,
"LogLevel": {
"Default": "Warning"
}
}
}
在startup.cs中的ConfigureServices方法中,获取数据库连接字符串,并添加数据库连接服务
public void ConfigureServices(IServiceCollection services)
{
var sqlConnection = Configuration.GetConnectionString("SqlServerConnection");
services.AddDbContext<APPDbContext>(option => option.UseSqlServer(sqlConnection));
services.AddMvc();
}
注意:这个地方一定要添加
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 命令的命令的时候,需要
五 总结
至此我们使用EF Core 1.1 创建好了数据库,其实PostgreSQL数据库也是这样创建,不同的是连接字符串和添加的依赖项。
吐槽自己一句,我发现自己真的不适合写文章,惰性太大,但是记性又不好,所以强迫自己写一下这类的文章,避免自己再忘记,也可以记录一下自己踩的坑。好了,就到这吧,下个文章再见!!!
EntityFramewok Core 1.1连接MSSql数据库详解的更多相关文章
- JAVA通过JDBC连接Oracle数据库详解【转载】
JAVA通过JDBC连接Oracle数据库详解 (2011-03-15 00:10:03) 转载▼http://blog.sina.com.cn/s/blog_61da86dd0100q27w.htm ...
- C#连接Access数据库(详解)
做一个用VS2012的C#连接Access数据库的备忘, SQL数据库固然强大,有大微软的强力技术支持,LINQ的方便操作,但是如果写一个小程序对数据库方面没有什么大的要求的话,将来在数据库方面就可以 ...
- JAVA采用JDBC连接操作数据库详解
JDBC连接数据库概述 一.JDBC基础知识 JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供 ...
- JAVA连接各种数据库详解
Java数据库连接(JDBC)由一组用 Java 编程语言编写的类和接口组成.JDBC 为工具/数据库开发人员提供了一个标准的 API,使他们能够用纯Java API 来编写数据库应用程序.然而各个开 ...
- 20.java-JDBC连接mysql数据库详解
1.JDBC介绍 jdbc(java database connectivity)为java开发者使用数据库提供了统一的编程接口,它由一组java类和接口组成. JDBC需要用到的类和接口有: Dri ...
- 如何从40亿整数中找到不存在的一个 webservice Asp.Net Core 轻松学-10分钟使用EFCore连接MSSQL数据库 WPF实战案例-打印 RabbitMQ与.net core(五) topic类型 与 headers类型 的Exchange
如何从40亿整数中找到不存在的一个 前言 给定一个最多包含40亿个随机排列的32位的顺序整数的顺序文件,找出一个不在文件中的32位整数.(在文件中至少确实一个这样的数-为什么?).在具有足够内存的情况 ...
- PHP连接MSSQL数据库案例,PHPWAMP多个PHP版本连接SQL Server数据库
课前小知识普及:MSSQL和SQL Server是同一个软件,叫法不同而已,MSSQL全称是Microsoft SQL Server,MSSQL是简写,有些人则喜欢直接叫SQL Server,我就比较 ...
- 【转发】PHP连接MSSQL数据库案例,PHPWAMP多个PHP版本连接SQL Server数据库
转发自:http://blog.csdn.net/lccee/article/details/54289076 课前小知识普及:MSSQL和SQL Server是同一个软件,叫法不同而已,MSSQL全 ...
- 走向DBA[MSSQL篇] 详解游标
原文:走向DBA[MSSQL篇] 详解游标 前篇回顾:上一篇虫子介绍了一些不常用的数据过滤方式,本篇详细介绍下游标. 概念 简单点说游标的作用就是存储一个结果集,并根据语法将这个结果集的数据逐条处理. ...
随机推荐
- (简单) POJ 1195 Mobile phones,二维树状数组。
Description Suppose that the fourth generation mobile phone base stations in the Tampere area operat ...
- windows下查找指定端口被哪个程序占用
在Windows环境下,用netstat命令查看某个端口号是否占用,为哪个进程所占用. eg.查看端口号为61078被哪个程序占用 1.查看端口号为61079被哪个PID所占用:Netstat –an ...
- linux命令学习-2-dmesg
DMESG NAME dmesg - print or control the kernel ring buffer(打印或者控制内核环缓冲) Usage: dmesg [options] Optio ...
- LPC1768基本输入输出GPIO使用
LPC1788通用IO口的控制包含了一些基本的组件,比如设置推挽输出,开漏输出,上拉电阻等,我们今天来看看. 首先使用GPIO要打开GPIO的系统时钟 LPC_SC->PCONP |= (1 ...
- Qt下libusb-win32的使用(转)
源:Qt下libusb-win32的使用(一)打印设备描述符 主要是在前一篇的基础上,学习libusb-win32的API使用.程序很简单,就是打印指定USB设备的设备描述符(当然其他描述符也是可以的 ...
- 苹果App Store开发者帐户从申请,验证,到发布应用(1)
app store为开发者提供四种类型的申请: 个人ios开发者计划$99/年 公司ios开发者计划$99/年 企业ios开发者计划$299/年 高校ios开发者计划免费 在这里主要介绍一下公司ios ...
- LRU Cache 题解
题意 Design and implement a data structure for Least Recently Used (LRU) cache. It should support the ...
- ExcelUtil
package cn.com.jansh.core.util; import org.apache.poi.hssf.usermodel.HSSFCell; import org.apache.poi ...
- HTML5定稿:手机App将三年内消失,互联网世界的第二次大战
HTML5与app以对立竞争的产品形态展现在大众视野.从去年开始又有一大批技术派或者创业者盯向html5领域,移动游戏的爆发和微信朋友圈等众多平台为HTML5导流,能不能颠覆,或许只是时间上的问题. ...
- 【angularjs】【学习心得】路由基础篇
原文:http://www.imooc.com/wenda/detail/236998 AngularJS自带有路由模块ngRoute,但是有经验的老师都推荐我们使用功能更完善更强大的ui-route ...