.netcore中使用EFCore链接SQL Server并部署至Ubuntu

前面一篇记录了如何在windows下开发asp.net core程序,并部署至ubuntu系统中。但仅仅是创建了一个demo项目,项目自己并无实现多少功能。多数时候,咱们的项目是要和数据库打交道。EntityFramework做为微软提供的基于ADO.NET的ORM解决方案,在dotnet core中,轻量级的EFCore也已经发布。话很少说,直接操做。html

1.项目中添加引用web

新建asp.net core web应用程序,右键项目,选择NuGet管理,搜索Microsoft.EntityFrameworkCore.SqlServer,Microsoft.EntityFrameworkCore.Tools两个包进行安装。sql

2.VS菜单上的工具-->NuGet包管理器-->程序包管理器控制台,打开控制台后,输入以下代码,建立上下文(DBContext)数据库

Scaffold-DbContext "数据库链接字符串" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models -Tables Employee

数据库链接字符串,和使用ado.net链接数据库时,web.config中配置的链接字符串同样。链接到你的数据库服务器便可。-Tables 能够用来指定针对数据库中某个或某几个表生成实体类,若是不加这个参数,会将数据库里的全部表生成实体。注意:若是项目所在目录有中文的话,这条命令执行可能会报错。json

命令执行完成后你会发现,项目下多了一个Models目录,而且多了两个文件:MyDbContext.cs和Employee.cs。打开MyDbContext.cs文件,找到OnConfiguring方法,将其注释掉。ubuntu

3.经过依赖关系注入上下文windows

打开Startup.cs文件,添加Microsoft.EntityFrameworkCore引用。找到ConfigureServices方法,在该方法末尾加入如下两行代码。MyDbContext须要添加应用(放在项目下的Models中),api

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

相关文章
相关标签/搜索