zoukankan      html  css  js  c++  java
  • .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

  • 相关阅读:
    css3正方体效果
    单行文本溢出和多行文本溢出变省略号
    iscroll的滑动效果
    angular笔记
    html页面的css样式、meta最常用的最基本最常规的配置参数
    解决webstorm卡顿问题
    pc端网页的设计尺寸
    时间字符串解析成日期时间格式
    Inf2Cat, signability test failed.
    #pragma once 与 #ifndef 解析(转载)
  • 原文地址:https://www.cnblogs.com/gxwang/p/9829803.html
Copyright © 2011-2022 走看看