前面一篇记录了如何在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的更多相关文章

  1. Excel VBA 连接各种数据库(三) VBA连接SQL Server数据库

    本文主要涉及: VBA中的SQL Server环境配置 VBA连接SQL Server数据库 VBA读写SQL Server数据 如何安装SQL Client 系统环境: Windows 7 64bi ...

  2. 处于同一个域中的两台Sql server 实例无法连接

    处于同一个域中的两台Sql server 实例无法连接,报的错误信息如下: A network-related or instance-specific error occurred while es ...

  3. 处于同一域中的两台SQL Server 实例无法连接

    处于同一个域中的两台Sql server 实例无法连接,报的错误信息如下: A network-related or instance-specific error occurred while es ...

  4. 在 myeclipse中进行连接sql server的测试

    在 myeclipse中,连接 sql server 用的 url connection 与 java 代码 连接的 url值完全相同. (一下为 java的jdbc连接 sql server 成功的 ...

  5. NetBeans连接SQL server数据库教程

    不废话,直接开始 1.下载sqljdbc.jar 可以从微软中国官方网站下载 SQLJDBC微软中国 笔者提供一个网盘链接Sqljdbc.jar 4个压缩包视版本选择,SQL 2012 用sqljdb ...

  6. 【转】PowerShell 连接SQL Server 数据库 - ADO.NET

    转至:http://www.pstips.net/connect-sql-database.html PowerShell 通过ADO.NET连接SQL Server数据库,并执行SQL脚本.工作中整 ...

  7. php连接sql server

    这两天有个php连接sql server的项目,顺便学习学习sql server  说明: 1:PHP5.2.x本身有个php_mssql.dll的扩展用来连接Sql server,但是这个dll只是 ...

  8. python 连接sql server

    linux 下pymssql模块的安装 所需压缩包:pymssql-2.1.0.tar.bz2freetds-patched.tar.gz 安装: tar -xvf pymssql-2.1.0.tar ...

  9. JDBC连接sql server数据库及其它

    JDBC连接sql server数据库的步骤如下: 1.加载JDBC驱动程序: 在连接数据库之前,首先要加载想要连接的数据库的驱动到JVM(Java虚拟机), 这通过java.lang.Class类的 ...

随机推荐

  1. codeforces B. Sereja and Mirroring 解题报告

    题目链接:http://codeforces.com/contest/426/problem/B 题目意思:给出一个n * m的矩阵a,需要找出一个最小的矩阵b,它能通过several次的mirror ...

  2. Oracle:不同数据库版本导致的Ora-00918问题

    今天有同事反映,一个sql在10.0.2.4下面执行是好的,在11.0.2.3报Ora-00918问题. sql语句如下: SELECT kcdm, bjdm, f.kszc, f.jszc FROM ...

  3. I.MX6 sdio 设备注册及识别

    /************************************************************************* * I.MX6 sdio 设备注册及识别 * 说明 ...

  4. 【AC自动机&&Trie图】积累

    以前KMP和后缀系列(主要是后缀数组,后缀自动机),都刷了一定数量的题,但是对于AC自动机,却有些冷落,罪过. 但是我感觉,在蓝桥杯比赛中AC自动机出现的概率比后缀系列大,简单的会考匹配,稍难一点会考 ...

  5. BZOJ_3063_[Usaco2013]Route Designing_DP

    BZOJ_3063_[Usaco2013]Route Designing_DP Description After escaping from the farm, Bessie has decided ...

  6. 哈希表的C实现(一)

    哈希表(Hash table,也叫散列表),是根据关键码值(Key value)而直接进行访问的数据结构.也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度.具体的介绍网上有很详 ...

  7. IOCP编程小结(中)

    上一篇主要谈了一些基本理念,本篇将谈谈我个人总结的一些IOCP编程技巧. 网络游戏前端服务器的需求和设计 首先介绍一下这个服务器的技术背景.在分布式网络游戏服务器中,前端连接服务器是一种很常见的设计. ...

  8. 6-6 Haar特征3

    B区域是包含AB这样两部分的.C区域是包含A和C这样两部分的.B区域和C区域它描述的是一个横条和一个竖条.D区域是四个方块之和. #haar 1 什么是haar? 特征 = 像素 运算 ->结果 ...

  9. 常用的Ant风格书写

    原文地址 Ant风格,为请求路径的一种匹配方式 通配符 说明 ? 匹配任意一个字符 * 匹配任意字符(包括0个) **  匹配任意层路径(包括0个) 支持Ant风格 1.spring资源加载 clas ...

  10. 看鸟哥的Linux私房菜的一些命令自我总结(一)

    -显示目前所支持的语言  echo &LANG -修改语言成为英文系统  LANG=en_US -显示日历的命令 cal [[month] year] -惯用关机命令 shutdown 参数: ...