Skip to main content

Command Palette

Search for a command to run...

在分開的 Class Library 專案中使用 Entity Framework Core Database First

Updated
1 min read
在分開的 Class Library 專案中使用 Entity Framework Core Database First

Entity Framework Core Database First at separate class library project

公司有一個新的專案,不大也不小,想說剛好用來上手一下 ASP.NET Core,結果還沒開始就已經撞得滿頭腦,差點就要放棄了,幸好在堅持一下就嘗試出來了,這件事花了我一整天搜尋與嘗試,特地紀錄一下

首先必須要說的是 Entity Framework Core Database First 的方式,工具對其之支援真是有夠差,完全必須手動新增某些關鍵設定才有辦法成功執行

環境:Visual Studio 2017 Update 5.1、 .Net Framework 4.7.1 與 .NetCore 2.0

首先當然是新增一個 .NetCore Class Library 專案

新增 .NetCore Class Library 專案

專案新增完畢後,先進行必要的 nuget package 安裝,安裝以下四個 nuget package,安裝版本請務必選擇相同版本,我這邊安裝的都是 2.0.1

安裝完後,接下來還有一個 nuget package 需要安裝,但其特殊性必須額外拿出來說

Install-Package Microsoft.EntityFrameworkCore.Tools.DotNet

先來看一下安裝需求,2.0.1 版本所需求之 Microsoft.NETCore.App 為大於等於 2.0.3,但是一開始新增 Class Library 專案之 Microsoft.NETCore.App 版本為 2.0.0,所以無法安裝

20171213 實驗時,.NetCore 2.1.0-preview2-25624-02 連空專案都 Build 不過,直接放棄

Microsoft.EntityFrameworkCore.Tools.DotNet

想要使用 Nuget Package 管理工具升級時,發現 Microsoft.NETCore.App 被鎖住無法升級或是降級

Microsoft.NETCore.App

只能用文字編輯器打開 ClassLibrary1.csproj 直接編輯,將其版本修改為 2.0.3,如下並存檔

修改完畢後,就可以安裝 Microsoft.EntityFrameworkCore.Tools.DotNet Package 了

安裝完畢後,再次用文字編輯器打開 ClassLibrary1.csproj 進行編輯,這次要加的是關係到 Entity Framework Core 是否能正確動作的關鍵設定:DotNetCliToolReference

加入兩行 DotNetCliToolReference 後,Entity Framework Core 就可以正確動作了

Complete

如果還有問題的話,可以去安裝 .NET Core CLI,有時會是工具連組態都沒有設定好

就因為 Visual Studio 不會自動幫你加入 DotNetCliToolReference 就花費了一整天的時間..

在 Visual Studio 內使用 Package Manager Console 之指令

Scaffold-DbContext "Connection String" Microsoft.EntityFrameworkCore.SqlServer -outputdir Models

在 CMD 視窗之指令

dotnet ef dbcontext scaffold "Connection String" Microsoft.EntityFrameworkCore.SqlSe rver --output-dir Models

參考:

[No executable found matching command "dotnet-ef" even after adding CLI · Issue #8996 · aspnet… I want to Migrate my Database with Models. I am using EF Core 2.0 Preview. dotnet ef migrations add InitialCreate…github.com](https://github.com/aspnet/EntityFrameworkCore/issues/8996 "https://github.com/aspnet/EntityFrameworkCore/issues/8996")

[Getting Started on ASP.NET Core - Existing Database - EF Core In this walkthrough, you will build an ASP.NET Core MVC application that performs basic data access using Entity…docs.microsoft.com](https://docs.microsoft.com/en-us/ef/core/get-started/aspnetcore/existing-db "https://docs.microsoft.com/en-us/ef/core/get-started/aspnetcore/existing-db")

More from this blog

Career-Ops 安裝與設定 — 用 AI 來幫你篩職缺、客製履歷

最近在看新的工作機會,光是瀏覽職缺、比對 JD、調整履歷就花了不少時間。 後來找到 Career-Ops 這個開源專案 作者 santifer 用這套系統篩了 740 多個職缺、產出 100 多份客製化履歷,最後拿到 Head of Applied AI 的 offer。 看起來蠻有意思的,所以我就在 Windows 上實際裝了一輪,這篇就來把整個安裝和設定的過程記錄下來。 我這邊搭配的 AI 後

Apr 12, 20265 min read
Career-Ops 安裝與設定 — 用 AI 來幫你篩職缺、客製履歷

讓 LLM 自動化你的 N8N 工作流程:n8n-mcp-server 安裝指南

前言 網路上一大堆都是在介紹如何在 N8N 裡面用 MCP 來呼叫其他工具,但是更多時候我希望 LLM 能直接幫我寫好或是修改 N8N 的工作流程 所以這篇就來介紹如何設定與使用 n8n-mcp-server 來讓 LLM 幫忙操控 N8N 在 GitHub 上有不少的 n8n-mcp-server,經過一下下的簡單搜索,我決定使用這個專案: n8n-mcp-server 原因在於說這個專案的實作提供了基本上所有需要編輯工作流程的功能,以下就來記錄安裝過程 MCP Server 設定 首先當然...

May 28, 20253 min read

[IT 鐵人賽] ASP.NET Core 與 Log 紀錄和追蹤的愛恨交織 - Day 05 - Elmah - 02

.NET Core Logging- Elmah 02 上一篇我們提到了基本的使用方式,接下來的這一篇我們就來講講要怎麼把 Log 放到不同的儲存體上,以及如何過濾 Log Log 儲存方式 我們先來看這些 Log 倒底存在哪裡,目前共有三種儲存方式,如下: MemoryErrorLog — store errors in memory 預設為使用此方式,簡單來說就是將錯誤 Log 都存在記憶體裡,所以只要應用程式一重新啟動,Log 就沒了;但是也是最方便的方式,只是要注意如果 Log 太...

Oct 20, 20182 min read
[IT 鐵人賽] ASP.NET Core 與 Log 紀錄和追蹤的愛恨交織 - Day 05 - Elmah - 02

[IT 鐵人賽] ASP.NET Core 與 Log 紀錄和追蹤的愛恨交織 - Day 04 - Elmah - 01

.NET Core Logging- Elmah 01 Elmah 是我最一開始使用的 Log 工具,基本上它的功能就是將應用程式所有發生的錯誤記錄下來,不需要改變程式架構,而且又有介面可以觀看,十分的方便;它從 WebForm 時代就有了,到了 MVC 也是運作的很好,那這邊就來介紹一下 Elmah 要如何在 ASP.NET Core 中使用 (.NET Core 也可使用)。 不過很可惜的,目前並沒有釋出官方的 Elmah for .NET Core,不過有一個新專案: ElmahCore...

Oct 19, 20181 min read
[IT 鐵人賽] ASP.NET Core 與 Log 紀錄和追蹤的愛恨交織 - Day 04 - Elmah - 01

[IT 鐵人賽] Azure Data Service - Day 04 - Cognitive Service - 辨識 - Video Indexer

Azure Data Service - Day 04 - Cognitive Service - Vision - Video Indexer 前面幾篇都是介紹靜態影像的辨識與分析,那這篇就來到針對影片來做處理。 Cognitive Service 針對影片辨識的部分提供了:Video Indexer 它整合了許多功能,在這邊列出一些比較重要的功能: 語系偵測 可以自動偵測出這個影片是屬於哪個語系,目前支援: English, Spanish, French, German, Italia...

Oct 19, 20181 min read
[IT 鐵人賽] Azure Data Service - Day 04 - Cognitive Service - 辨識 - Video Indexer

BrainBurst, HeadFirst

45 posts

學習學到老,撞牆撞到腦. A lifelong quest—with forehead dents.