日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

一步步学习EF Core(1.DBFirst)

發布時間:2023/12/4 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 一步步学习EF Core(1.DBFirst) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前言

很久沒寫博客了,因為真的很忙,終于空下來,打算學習一下EF Core順便寫個系列, 今天我們就來看看第一篇DBFirst.

?本文環境:VS2017 ?Win7 ?.NET Core1.1 ? ?EF Core1.1.2

正文

這里我們不討論是用DBFirst好,還是CodeFirst高端..各有各自的用處和適用場景..

我們單純的只是來使用這個DBFirst..

既然是DBFirst,那么在用DBFirst之前..首先你要有一個數據庫(嗯,廢話)

其次,如果你是Windows7系統 那么需要升級你的Windows PowerShell到3.0+的版本

然后你需要安裝相關的工具包,從NuGet下載即可如下圖:

為了方便你們復制..我列一下:

Microsoft.EntityFrameworkCore

Microsoft.EntityFrameworkCore.SqlServer

Microsoft.EntityFrameworkCore.Tools

Microsoft.EntityFrameworkCore.Design

Microsoft.EntityFrameworkCore.SqlServer.Design

然后,我們在VS的工具選項中,選擇NuGet包管理器,選擇程序包管理控制臺

輸入命令行:

Scaffold-DbContext "這里輸入你的數據庫連接字符串" Microsoft.EntityFrameworkCore.SqlServer

就會生成一個Modles文件夾如圖:

這里面就是你的上下文對象和相關的實體類了.

我們進到上下文對象,會發現自己的連接字符串是固化在這里面的,如圖:

我們當然不能這么做,所以,請刪除掉他.

下一步,我們使用Asp.net Core 來測試測試看能不能訪問.

創建Core項目的流程,我就不說了

然后給你的Core項目用NuGet添加引用:Microsoft.EntityFrameworkCore.SqlServer和Microsoft.EntityFrameworkCore

在配置文件里添加數據庫連接字符串:

"ConnectionStrings": {
"SchoolConnection": "Data Source=.;Initial Catalog=School_Test;User ID=**;Password=***;
MultipleActiveResultSets=true
"}

然后我們在Startup中注入我們的上下文對象:

在ConfigureServices()方法中注入,代碼如下:

public void ConfigureServices(IServiceCollection services){
// Add framework services. ? ? ? ? ?
? ? ? ? ? ?
//注入SignalR.(與本文無關,請無視)services.AddSignalR(options =>{options.Hubs.EnableDetailedErrors = true;}); //注入上下文對象services.AddDbContext<School_TestContext>(options =>options.UseSqlServer(Configuration.GetConnectionString("SchoolConnection")));services.AddMvc();}

我們創建控制器,代碼如下:


public class TestController : Controller{ //構造函數注入上下文private readonly School_TestContext _context;

public TestController(School_TestContext Context){_context = Context;} public IActionResult ListView(){ return View(_context.UserTable.ToList());}}

創建相應的視圖如下:

@model IEnumerable<EFCoreModel.Modles.UserTable>@{ViewData["Title"] = "ListView";Layout = "~/Views/Shared/_Layout.cshtml"; } <h2>ListView</h2><p><a asp-action="Create">Create New</a></p><table class="table"><thead><tr><th>用戶名 </th><th>密碼 </th><th>ID </th><th>班級名 </th><th></th></tr></thead><tbody>@foreach (var item in Model){ <tr><td>@Html.DisplayFor(modelItem => item.UserName) </td><td>@Html.DisplayFor(modelItem => item.PassWord) </td><td>@Html.DisplayFor(modelItem => item.Id) </td><td>@Html.DisplayFor(modelItem => item.Class.ClassName)
</td><td><a asp-action="Edit" asp-route-id="@item.Id">Edit</a> |
<a asp-action="Details" asp-route-id="@item.Id">Details</a> | <a asp-action="Delete" asp-route-id="@item.Id">Delete</a></td></tr>} </tbody></table>

運行代碼,會報錯.如下錯誤:

No database provider has been configured for this DbContext. A provider can be configured by overriding the DbContext.OnConfiguring method or by using AddDbContext on the application service provider. If AddDbContext is used, then also ensure that your DbContext type accepts a DbContextOptions<TContext> object in its constructor and passes it to the base constructor for DbContext.

?

這是因為我們通過DBFirst生成的上下文并不能直接拿來注入使用.我們需要改造一下,給上下文添加構造函數,如下:

public School_TestContext(DbContextOptions options) :base(options){}

然后在運行我們的代碼.得到結果如下:

我們發現紅框位置的作為關聯表的班級名,并沒有顯示~,這個留待我們后面講解.

原文地址:http://www.cnblogs.com/GuZhenYin/p/6857413.html


.NET社區新聞,深度好文,微信中搜索dotNET跨平臺或掃描二維碼關注

總結

以上是生活随笔為你收集整理的一步步学习EF Core(1.DBFirst)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。