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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

【.Net core】EFCore——Code First生成数据库与表

發(fā)布時(shí)間:2023/12/4 asp.net 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【.Net core】EFCore——Code First生成数据库与表 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

Code First——領(lǐng)域設(shè)計(jì)模式中非常有用。使用 Code First 模式,專注于領(lǐng)域設(shè)計(jì),創(chuàng)建領(lǐng)域類,然后生成數(shù)據(jù)庫。

1.創(chuàng)建數(shù)據(jù)模型類

一般就是數(shù)據(jù)庫里面有哪些表,就創(chuàng)建哪些模型, POCO 類就夠了。

????public?partial?class?SmsPush{[Key]public?int?Id?{?get;?set;?}[MaxLength(128)]public?string?AppName?{?get;?set;?}[DataType(DataType.Text)]public?string?TargetValue?{?get;?set;?}[DataType(DataType.Text)]public?string?Content?{?get;?set;?}[DataType(DataType.DateTime)]public?DateTime?CreateTime?{?get;?set;?}}

2.安裝 nuget 包

按您使用的數(shù)據(jù)選擇包

  • sqlserver:Install-Package Microsoft.EntityFrameworkCore.SqlServer

  • mysql:Install-Package MySql.Data.EntityFrameworkCore

3.創(chuàng)建數(shù)據(jù)庫上下文類

需要繼承DbContext

public?class?MvcMovieContext?:?DbContext{public?MvcMovieContext?(DbContextOptions<MvcMovieContext>?options):?base(options){}public?DbSet<Movie>?Movie?{?get;?set;?}}

4.注冊數(shù)據(jù)庫上下文

在應(yīng)用啟動(dòng)過程中,EF core 數(shù)據(jù)庫上下文服務(wù)必須通過依賴注入注冊。需要服務(wù),通過構(gòu)造函數(shù)注入即可。

  • sqlserver

?services.AddDbContext<MvcMovieContext>(options?=>options.UseSqlServer(Configuration.GetConnectionString("MvcMovieContext")));
  • mysql

??services.AddDbContext<PushContext>(options?=>{options.UseMySQL(Configuration.GetConnectionString("PushContext"));});

5.添加數(shù)據(jù)連接字符串

上面的Configuration.GetConnectionString,是從appsettings.json中讀取的。所以需要添加相關(guān)配置。由于使用的是 mysql,所以相關(guān)配置如下

{"ConnectionStrings":?{"PushContext":?"Persist?Security?Info=False;database=push-center;server=localhost;Connect?Timeout=30;user?id=root;?pwd=111111"} }

mysql 鏈接字符串,參考 mysql 官方:https://dev.mysql.com/doc/dev/connector-net/8.0/html/P_MySql_Data_MySqlClient_MySqlConnection_ConnectionString.htm

6.安裝 Mysql

由于博主是在 windows 下開發(fā),所以這里介紹最簡單的 windows 下安裝 mysql 的方法及后續(xù)相關(guān)操作。這里我們推薦使用巧克力安裝 mysql,一款越用越香的 windows 包管理器,如果不知道巧克力,請參考博文【Nginx】Nginx 部署實(shí)戰(zhàn)——靜態(tài)文件+反向代理+均衡負(fù)載+https+websocket,有關(guān)于巧克力的安裝,可以類比 centos 的黃狗(yum).

#安裝mysql choco install mysql #遇到讓你選擇是否運(yùn)行腳本,Y/A 按著走
  • 有可能會(huì)遇到在https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.20-winx64.zip下載巨慢的情況(在公司下載很快,晚上在家下載很慢,不知道為啥,想辦法吧),可以在巧克力執(zhí)行powershell之前,也就是提示選擇他要執(zhí)行 C:\ProgramData\chocolatey\lib\mysql\tools\chocolateyInstall腳本,去編輯這個(gè)腳本,替換為國內(nèi)資源鏡像

#第三行 $url = 'https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.20-winx64.zip' #替換為搜狐鏡像 類似還有 #網(wǎng)易 http://mirrors.163.com/ #中科大 http://mirrors.ustc.edu.cn/ #清華 https://mirrors.tuna.tsinghua.edu.cn/ $url = 'http://mirrors.sohu.com/mysql/MySQL-8.0/mysql-8.0.20-winx64.zip'

不出意外,mysql就安裝好了,路徑C:\tools,甚至相關(guān) windows 服務(wù)也裝好了。根據(jù)之前的經(jīng)驗(yàn)【One by one 系列】一步步部署.Net core 應(yīng)用-CentOs 介紹的 mysql 安裝后,初始化密碼

# 修改密碼 # 初次安裝mysql,root賬戶沒有密碼。直接登錄 mysql -u root mysql>show databases; mysql>set password for 'root'@'localhost' =password('設(shè)置你的密碼'); Query OK, 0 rows affected (0.00 sec) #不需要重啟數(shù)據(jù)庫即可生效

上面是針對 5.6 以下的版本有效,通過巧克力默認(rèn)安裝的是最新版本,是 8.0 版本,修改密碼的操作需要更換如下 sql 語句。

mysql -u root#初始化root賬戶的密碼 mysql>ALTER USER root@localhost IDENTIFIED BY '123456';

7.初始遷移-Initial migration

運(yùn)用 efcore 遷移功能來創(chuàng)建數(shù)據(jù)庫。migration 是可用于創(chuàng)建和更新數(shù)據(jù)庫以匹配數(shù)據(jù)模型的一組工具

#第一步 Add-Migration InitialCreate#第二步 Update-Database
  • Add-Migration InitialCreate:生成 Migrations/{timestamp}_InitialCreate.cs 遷移文件 。InitialCreate 參數(shù)是遷移名稱。可以使用任何名稱,但是按照慣例,會(huì)選擇可說明遷移的名稱。因?yàn)檫@是首次遷移,所以生成的類包含用于創(chuàng)建數(shù)據(jù)庫架構(gòu)的代碼。

  • Update-Database:將數(shù)據(jù)庫更新到上一個(gè)命令創(chuàng)建的最新遷移。此命令運(yùn)行在 Migrations/{time-stamp}_InitialCreate.cs 文件中 Up 方法,用于創(chuàng)建數(shù)據(jù)庫的。

    • ps:Up 方法創(chuàng)建 表。Down 方法可還原 Up 遷移所做的架構(gòu)更改。

  • 如果是數(shù)據(jù)庫更新,會(huì)生成如下警告(可以忽略):

No type was specified for the decimal column 'Price' on entity type 'Movie'. This will cause values to be silently truncated if they do not fit in the default precision and scale. Explicitly specify the SQL server column type that can accommodate all the values using 'HasColumnType()'.

更多內(nèi)容參考:https://docs.microsoft.com/zh-cn/ef/core/miscellaneous/cli/powershell

8.依賴注入數(shù)據(jù)庫上下文

public?class?MoviesController?:?Controller {private?readonly?MvcMovieContext?_context;public?MoviesController(MvcMovieContext?context){_context?=?context;} }

9.遷移回退

上面 migration 命令,主要依賴Microsoft.EntityFrameworkCore.Tools包,如果此包缺失,請安裝。

#先檢查下 Get-Help about_EntityFrameworkCore PM> Get-Help about_EntityFrameworkCore_/\__---==/ \\___ ___ |. \|\| __|| __| | ) \\\| _| | _| \_/ | //|\\|___||_| / \\\/\\TOPICabout_EntityFrameworkCoreSHORT DESCRIPTIONProvides information about the Entity Framework Core Package Manager Console Tools.LONG DESCRIPTIONThis topic describes the Entity Framework Core Package Manager Console Tools. See https://docs.efproject.net forinformation on Entity Framework Core.The following Entity Framework Core commands are available.Cmdlet Description-------------------------- ---------------------------------------------------Add-Migration Adds a new migration.Drop-Database Drops the database.Get-DbContext Gets information about a DbContext type.Remove-Migration Removes the last migration.Scaffold-DbContext Scaffolds a DbContext and entity types for a database.Script-DbContext Generates a SQL script from the current DbContext.Script-Migration Generates a SQL script from migrations.Update-Database Updates the database to a specified migration.SEE ALSOAdd-MigrationDrop-DatabaseGet-DbContextRemove-MigrationScaffold-DbContextScript-DbContextScript-MigrationUpdate-Database#上面是包沒問題的象征,如果有問題,再執(zhí)行如下命令 Install-Package Microsoft.EntityFrameworkCore.Tools

To undo this action, use Remove-Migration.

# POCO類修改=>修改數(shù)據(jù)表 # 給本次遷移取一個(gè)名字:UpdateEditions,初始化取的名字:InitialCreate Add-Migration UpdateEditions# 更新 Update-Database# 突然發(fā)現(xiàn)可能有影響,那就回滾吧,刪除上一次遷移(回滾針對遷移進(jìn)行的代碼更改) Remove-Migration

Remove-Migration

參數(shù)說明
-Force恢復(fù)遷移(回滾應(yīng)用于數(shù)據(jù)庫的更改)。

參考鏈接

https://docs.microsoft.com/zh-cn/ef/core/miscellaneous/cli/powershell

https://docs.microsoft.com/zh-cn/ef/core/

https://docs.microsoft.com/zh-cn/aspnet/core/tutorials/first-mvc-app/adding-model?view=aspnetcore-3.1&tabs=visual-studio

長按二維碼關(guān)注

總結(jié)

以上是生活随笔為你收集整理的【.Net core】EFCore——Code First生成数据库与表的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 麻豆一区产品精品蜜桃的特点 | 小泽玛利亚一区二区三区在线观看 | 欧美伦理一区二区 | 麻豆视频免费 | 日日夜夜精品视频免费 | 婷婷五月情| 老司机av福利 | 色翁荡息又大又硬又粗又爽 | www夜夜| 午夜性刺激免费视频 | 干美女少妇 | 国产精品13p| 最色网站| 日韩美女视频网站 | 人人看人人爽 | 久久国产精品二区 | 美国av大片 | 亚洲天堂2013 | 在线国产精品视频 | 99国产精品国产免费观看 | 骚鸭av | 一本色道久久亚洲综合精品蜜桃 | 精品999久久久一级毛片 | 黄色大片网址 | 又紧又大又爽精品一区二区 | 中文字幕一区二区久久人妻 | 蜜臀av性久久久久蜜臀aⅴ麻豆 | 日韩中文字幕二区 | 免费日韩一区 | 婷婷色婷婷开心五月四房播播 | 日韩专区在线 | 中文字幕亚洲不卡 | 少妇脚交调教玩男人的视频 | 欧美一级黄色网 | 亚洲一级特黄 | 黄视频在线观看免费 | 日韩美女视频一区二区 | 欧美精品第二页 | 久久99热人妻偷产国产 | 免费v片在线观看 | 亚洲综合精品一区 | 亚洲第一av | 日本韩国在线 | 亚洲AV无码久久精品色三人行 | 日本黄视频网站 | 色涩视频在线观看 | 人人妻人人澡人人爽 | 精品久久亚洲 | 色亚洲天堂 | 久热中文| 69视频在线播放 | 在线艹 | 亚洲作爱网| 在线播放www | 黄色三级在线观看 | 在线观看黄网 | 香蕉久久综合 | 日本一区二区免费在线观看 | 香蕉av在线| 天天操国产 | 欧美极品一区二区三区 | 国产成人一区二区三区 | 国产精品久久久久久在线观看 | 污污网站免费在线观看 | 九九操| 精品人伦一区二区三区蜜桃网站 | 99精品一区二区三区 | 韩日视频一区 | 免费看的av网站 | 制服诱惑一区二区三区 | 综合网婷婷 | 天堂资源站 | 香港三级韩国三级日本三级 | 97超碰资源站 | 日本一区二区欧美 | 精品久久久久久久久久久国产字幕 | 亚洲大片免费观看 | 免费荫蒂添的好舒服视频 | 亚洲网在线观看 | 日本高清免费看 | 日本午夜激情 | av黄色小说 | 性一交一乱一色一视频麻豆 | 免费看av毛片 | 97干干干 | 久久久久久蜜桃 | 奇米影视色 | 99啪啪| 国产一级美女 | 麻豆回家视频区一区二 | 中文字幕第一页在线视频 | 欧美大黑b| 欧美日韩免费一区二区 | 9久久精品 | 久久精品一区 | 草逼视频网 | 成人三级晚上看 | 中文字幕永久免费 | 欧美激情性生活 |