微軟最近幾年在跨平臺上不斷發力,很多.net程式員也摩拳擦掌,對微軟寄以厚望。就在最近,微軟還推出了asp .net core2.0預覽版。 通過對.net core的簡單嘗試,我發現以往我們開發MVC項目時,是通過新建一個.edmx文件來生成和更新實體模型,但是在core中,微軟去掉了.edmx, ...
微軟最近幾年在跨平臺上不斷發力,很多.net程式員也摩拳擦掌,對微軟寄以厚望。就在最近,微軟還推出了asp .net core2.0預覽版。
通過對.net core的簡單嘗試,我發現以往我們開發MVC項目時,是通過新建一個.edmx文件來生成和更新實體模型,但是在core中,微軟去掉了.edmx,所以下麵我就來說一下core中如何生成model類。
環境:vs2017 + sqlserver2012
第一步 我們先創建測試庫
CREATE DATABASE [Blogging]; GO USE [Blogging]; GO CREATE TABLE [Blog] ( [BlogId] int NOT NULL IDENTITY, [Url] nvarchar(max) NOT NULL, CONSTRAINT [PK_Blog] PRIMARY KEY ([BlogId]) ); GO CREATE TABLE [Post] ( [PostId] int NOT NULL IDENTITY, [BlogId] int NOT NULL, [Content] nvarchar(max), [Title] nvarchar(max), CONSTRAINT [PK_Post] PRIMARY KEY ([PostId]), CONSTRAINT [FK_Post_Blog_BlogId] FOREIGN KEY ([BlogId]) REFERENCES [Blog] ([BlogId]) ON DELETE CASCADE ); GO INSERT INTO [Blog] (Url) VALUES ('http://blogs.msdn.com/dotnet'), ('http://blogs.msdn.com/webdev'), ('http://blogs.msdn.com/visualstudio') GO
第二步 創建一個.net core項目
略
第三步 安裝ef
因為.net core 項目本身沒有引用ef,所以我們需要手動引入ef: Tools -> NuGet Package Manager -> Package Manager Console
Run Install-Package Microsoft.EntityFrameworkCore.SqlServer
RunInstall-Package Microsoft.EntityFrameworkCore.Tools
RunInstall-Package Microsoft.EntityFrameworkCore.SqlServer.Design
通過nuget安裝:
第四步 通過資料庫創建實體模型
Tools –> NuGet Package Manager –> Package Manager Console Run the following command to create a model from the existing database. If you receive an error stating The term 'Scaffold-DbContext' is not recognized as the name of a cmdlet, then close and reopen Visual Studio. 如果報了上面這個錯,可以關掉vs再重新打開後再次嘗試。
Scaffold-DbContext "Server=.;Database=Blogging;Trusted_Connection=True;" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models
項目會生成一個model文件夾,裡面有我們需要的實體類和上下文BloggingContext.cs
完成!因為我們只介紹如何生成實體類,所以就到此為止,如果想操作實體類增刪改查,我們還需要註冊上下文在Startup.cs文件里,具體可以參考微軟的說明文檔:
https://docs.microsoft.com/en-us/ef/core/get-started/aspnetcore/existing-db