前面一篇記錄瞭如何在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