.netcore中使用EFCore连接SQL Server并部署至Ubuntu
前面一篇记录了如何在windows下开发asp.net core程序,并部署至ubuntu系统中。但仅仅是建立了一个demo项目,项目本身并没有实现多少功能。多数时候,我们的项目是要和数据库打交道。EntityFramework作为微软提供的基于ADO.NET的ORM解决方案,在dotnet core中,轻量级的EFCore也已经发布。话不多说,直接操作。
1.项目中添加引用
新建asp.net core web应用程序,右键项目,选择NuGet管理,搜索Microsoft.EntityFrameworkCore.SqlServer,Microsoft.EntityFrameworkCore.Tools两个包进行安装。

2.VS菜单上的工具-->NuGet包管理器-->程序包管理器控制台,打开控制台后,输入如下代码,创建上下文(DBContext)
Scaffold-DbContext "数据库连接字符串" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models -Tables Employee
数据库连接字符串,和使用ado.net连接数据库时,web.config中配置的连接字符串一样。连接到你的数据库服务器即可。-Tables 可以用来指定针对数据库中某个或某几个表生成实体类,如果不加这个参数,会将数据库里的所有表生成实体。注意:如果项目所在目录有中文的话,这条命令执行可能会报错。
命令执行完成后你会发现,项目下多了一个Models目录,并且多了两个文件:MyDbContext.cs和Employee.cs。打开MyDbContext.cs文件,找到OnConfiguring方法,将其注释掉。

3.通过依赖关系注入上下文
打开Startup.cs文件,添加Microsoft.EntityFrameworkCore引用。找到ConfigureServices方法,在该方法末尾加入以下两行代码。MyDbContext需要添加应用(放在项目下的Models中),
var connection = @"数据库连接字符串";
services.AddDbContext<MyDbContext>(options => options.UseSqlServer(connection));
好了,接下来就可以在控制器中使用MyDbContext了。我们可以在项目自带的ValuesController中加一个方法,来试试看。在ValuesController中添加如下代码,并修改ValuesCotroller默认的路由方案
[Route("api/[controller]")]
改为
[Route("api/[controller]/[action]")]
ValuesController添加下面代码,用来获取Employee表中的数据。
private readonly MyDbContext _context;
public ValuesController(MyDbContext context)
{
_context = context;
}
[HttpGet]
public IEnumerable<Employee> GetEmployees()
{
return _context.Employee.ToList();
}
执行项目,在浏览器地址后面输入路由规则 localhost:xxxxx/api/values/GetEmployees 返回如下内容

恭喜你,已经成功将数据库中Employee表中数据取出,返回成json格式。
4. 打包并部署至ubuntu
可以参考上一篇中的步骤,将项目部署至ubuntu系统中。这里需要注意的是,如果你其他功能访问正常,但连接数据库时出错(通过supervisor配置的输出日志/var/log/youapp.out.log 查看错误),检查你的数据库版本。需要SQL Server2008R2 sp3版本以上才可以,如果你时sql server 2008R2,可以通过下面连接下载补丁包安装,完成后重启sqlserver服务即可。
补丁下载:
https://www.microsoft.com/en-us/download/details.aspx?id=44271
参考连接:
https://docs.microsoft.com/zh-cn/ef/core/get-started/aspnetcore/existing-db
http://www.cnblogs.com/weiweithe/p/7810803.html
.netcore中使用EFCore连接SQL Server并部署至Ubuntu的更多相关文章
- Excel VBA 连接各种数据库(三) VBA连接SQL Server数据库
本文主要涉及: VBA中的SQL Server环境配置 VBA连接SQL Server数据库 VBA读写SQL Server数据 如何安装SQL Client 系统环境: Windows 7 64bi ...
- 处于同一个域中的两台Sql server 实例无法连接
处于同一个域中的两台Sql server 实例无法连接,报的错误信息如下: A network-related or instance-specific error occurred while es ...
- 处于同一域中的两台SQL Server 实例无法连接
处于同一个域中的两台Sql server 实例无法连接,报的错误信息如下: A network-related or instance-specific error occurred while es ...
- 在 myeclipse中进行连接sql server的测试
在 myeclipse中,连接 sql server 用的 url connection 与 java 代码 连接的 url值完全相同. (一下为 java的jdbc连接 sql server 成功的 ...
- NetBeans连接SQL server数据库教程
不废话,直接开始 1.下载sqljdbc.jar 可以从微软中国官方网站下载 SQLJDBC微软中国 笔者提供一个网盘链接Sqljdbc.jar 4个压缩包视版本选择,SQL 2012 用sqljdb ...
- 【转】PowerShell 连接SQL Server 数据库 - ADO.NET
转至:http://www.pstips.net/connect-sql-database.html PowerShell 通过ADO.NET连接SQL Server数据库,并执行SQL脚本.工作中整 ...
- php连接sql server
这两天有个php连接sql server的项目,顺便学习学习sql server 说明: 1:PHP5.2.x本身有个php_mssql.dll的扩展用来连接Sql server,但是这个dll只是 ...
- python 连接sql server
linux 下pymssql模块的安装 所需压缩包:pymssql-2.1.0.tar.bz2freetds-patched.tar.gz 安装: tar -xvf pymssql-2.1.0.tar ...
- JDBC连接sql server数据库及其它
JDBC连接sql server数据库的步骤如下: 1.加载JDBC驱动程序: 在连接数据库之前,首先要加载想要连接的数据库的驱动到JVM(Java虚拟机), 这通过java.lang.Class类的 ...
随机推荐
- myeclipse8.6注册码
loveyLR8ZC-855550-69545856608357821
- Kafka使用经验小结
本文尽量从一个使用者的角度去记录一些在实战当中使用Kfaka所需要关注的要点,这样可能会贴切更多的读者,本文并不会介绍太多的Kafka的一些架构层次设计的知识,因为网上已经有一大堆的重复搬运的资料任由 ...
- skynet源码阅读<3>--网关分析
继上一篇介绍了skynet的网络部分之后,这一篇以网关gate.lua为例,简单分析下其串接和处理流程. 在官方给出的范例中,是以examples/main.lua作为启动脚本的,在此过程中会创建wa ...
- UILabel 常见问题总结
写在前面:笔者在iOS软件开发中发现UILabel控件有些问题反复出现,所以在这里做点总结,方便自己查阅,也能给大家提供相关问题的解决方案. 一:当label里的内容显示满了的时候,能够自动将字体变小 ...
- 865C
二分+期望dp 好神奇啊...出题人太神了! 我们发现dp之间的关系不满足是一个dag,那么我们只能用高斯消元,但是由于这里是取最小值,需要取min,也不能用高斯消元,于是我们想出了一个奇妙的方法 我 ...
- 148D
概率dp+记忆化搜索 dp[i][j][0]表示当前公主走公主赢的概率,dp[i][j][1]表示当前龙走公主赢的概率,然后剩下的就是一些细节的讨论,记忆化搜索很方便 #include<bits ...
- 文件的创建,读取,写入,修改,删除---python入门
转自:http://blog.163.com/jackylau_v/blog/static/175754040201181505158356/ 一.用Python创建一个新文件,内容是从0到9的整数, ...
- 解决IIS中部署WCF时,访问.svc文件的404错误问题
如果你直接在IIS 7中配置WCF,访问.svc文件时会出现404错误.解决方法,以管理员身份进入命令行模式,运行:"%windir%\Microsoft.NET\Framework\v3. ...
- Divide the Sequence
Time Limit: 5000/2500 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Submission( ...
- notepad++的NppFTP插件远程连接linux操作系统
1.首先要有NppFTP插件,如果没有可以去下面链接或者其他网站下载: https://sourceforge.net/projects/nppftp/files/latest/download ...