国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Net Core中使用EF Core連接Mysql數(shù)據(jù)庫(kù)

這篇具有很好參考價(jià)值的文章主要介紹了Net Core中使用EF Core連接Mysql數(shù)據(jù)庫(kù)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

Entity Framework Core的前身是微軟提供并主推的ORM框架,簡(jiǎn)稱EF,其底層是對(duì)ADO.NET的封裝。EF支持SQLServer、MYSQL、Oracle、Sqlite等所有主流數(shù)據(jù)庫(kù)。
首先是使用時(shí)的幾個(gè)模式的整理及其理解:

  1. Code First:根據(jù)代碼自動(dòng)創(chuàng)建數(shù)據(jù)庫(kù)表結(jié)構(gòu)甚至是數(shù)據(jù)庫(kù),可以支持多庫(kù)開(kāi)發(fā),代碼較少冗余,由于會(huì)自動(dòng)更改數(shù)據(jù)庫(kù),如果有在實(shí)體類(lèi)中自定義了字段,不希望在數(shù)據(jù)庫(kù)中創(chuàng)建此字段(有時(shí)偷懶,不想定義ViewModel會(huì)這樣做),還需要自己實(shí)現(xiàn)單獨(dú)的生成代碼。這就復(fù)雜了。
  2. DB First:根據(jù)現(xiàn)有的數(shù)據(jù)庫(kù)結(jié)構(gòu)生成模型類(lèi)或?qū)嶓w類(lèi),這種適合數(shù)據(jù)庫(kù)結(jié)構(gòu)比較穩(wěn)定的產(chǎn)品,數(shù)據(jù)庫(kù)結(jié)構(gòu)較大,表較多,甚至多人開(kāi)發(fā)時(shí)頻繁變動(dòng)各自都要去生成太容易出錯(cuò)。同樣偷懶模式下會(huì)刪除字段。
  3. Model First:這種有可視化的模型設(shè)計(jì),也就是Edm文件,可以利用VS等工具快速生成數(shù)據(jù)庫(kù)腳本,類(lèi)似Code Fist,只不過(guò)能可視化編寫(xiě)模式,需要完全了解數(shù)據(jù)庫(kù)結(jié)構(gòu),貌似現(xiàn)在的NET Core時(shí)代沒(méi)有這玩意了。
  4. 靈活的模式:這個(gè)算是我自加的,我稱之為靈活的模式,就是DB和Code分開(kāi)來(lái)實(shí)現(xiàn),可以由不同的人來(lái)協(xié)作完成,更適合團(tuán)隊(duì)協(xié)作,DB由A來(lái)完成,Code由B來(lái)完成,甚至更多的人來(lái)參與,當(dāng)然這個(gè)也會(huì)有一個(gè)大問(wèn)題就是可能實(shí)體Code和DB不能很好的同步更新。
    我這里基于第四種靈活的模式來(lái)實(shí)現(xiàn),DB和Code分開(kāi)編寫(xiě)。分三步走。

第一步:引入EF
VS中NuGet需要添加兩個(gè)引用包,當(dāng)然你也可以用NuGet的包管理——程序包管理器控制臺(tái)安裝
Microsoft.EntityFrameworkCore 和 Pomelo.EntityFrameworkCore.MySql
當(dāng)然在.NetCore中配置文件已Json的方式配置,你還得引入讀取配置相關(guān)的包
Microsoft.Extensions.Configuration.Json

第二步:創(chuàng)建數(shù)據(jù)上下文DbContext
首先,什么是EF Core的數(shù)據(jù)上下文,建議參考下文章:https://www.cnblogs.com/Alex80/p/13413791.html。說(shuō)得非常明白。
然后,我們來(lái)創(chuàng)建一個(gè)數(shù)據(jù)上下文MyDbContext類(lèi),繼承自Microsoft.EntityFrameworkCore.DbContext。我們需要配置上數(shù)據(jù)庫(kù)連接:在構(gòu)造函數(shù)中指定需要讀取的配置文件,并且重寫(xiě)OnConfiguring方法,在其中讀取配置文件中我們配置的連接字符串,我這里讀取的是appsettings.json配置文件中的名為Default的配置。
配置文件的Mysql連接字符串類(lèi)似如下:

appsettings.json中的Mysql連接字符串
{
  "ConnectionStrings": {
    "Default": "Server=localhost;Database=ct_threeview;charset=utf8;uid=root;pwd=0b85232f9ebda56fc8a1f54f74383aF8a4055e570bb36cbb5;port=3506;"
  }
}

MyDbContext類(lèi)中的主要代碼如下,其中Test1,Study,Series就是我們的實(shí)體類(lèi),是和數(shù)據(jù)庫(kù)中的表一一對(duì)應(yīng)的。

Net Core中使用EF Core連接Mysql數(shù)據(jù)庫(kù)

實(shí)體類(lèi)是我們自己項(xiàng)目中手動(dòng)添加的類(lèi),Study表實(shí)體類(lèi)參考如下,
可以通過(guò)特性Table特性標(biāo)識(shí)實(shí)體對(duì)應(yīng)的是數(shù)據(jù)庫(kù)中的哪個(gè)表
可以通過(guò)Key特性來(lái)標(biāo)識(shí)哪個(gè)字段是主鍵
可以通過(guò)Column特性來(lái)標(biāo)識(shí)對(duì)應(yīng)數(shù)據(jù)庫(kù)表中的字段是哪個(gè)
Net Core中使用EF Core連接Mysql數(shù)據(jù)庫(kù)

到這里,真?zhèn)€的EF Core的引入就算完了,后面我們就可以開(kāi)始使用了,這里我貼幾個(gè)常規(guī)操作的代碼,更多的大家可以參考微軟官網(wǎng)或自行百度。

添加操作
        /// <summary>
        /// 這里是添加操作
        /// </summary>
        /// <param name="entity"></param>
        /// <returns></returns>
        public Study Insert(Study entity)
        {
            using (MyDbContext db = new MyDbContext())
            {
                db.Study.Add(entity);
                db.SaveChanges();
                //entity.Id= db.Entry(entity).Entity.Id;//返回插入的記錄并注入到userEntity,關(guān)鍵是這句
                return entity;
            }
        }
單個(gè)表部分字段更新操作
        public void UpdateNote(int studyId,string Note)
        {
            using (MyDbContext db = new MyDbContext())
            {
                var study = new Study() { Id = studyId, Notes = Note,modify_time=DateTime.Now };
                db.Study.Attach(study);
                db.Entry<Study>(study).Property("Notes").IsModified = true;
                db.Entry<Study>(study).Property("modify_time").IsModified = true;
                db.SaveChanges();
            }
        }
多表聯(lián)查操作
        public List<PatientDataListModel> QueryAllData()
        {
            using (MyDbContext db = new MyDbContext())
            {
                var query = from a in db.Study
                            join b in db.Series on a.Id equals b.Study_Id
                            select new PatientDataListModel
                            {
                                StudyId = a.Id,
                                StudyInstanceUID = a.StudyInstanceUID,
                                StudyDate = a.StudyDate,
                                Modality = a.Modality,
                                StudyFilePath = a.StudyFilePath,
                                Notes=a.Notes,
                                PatientName = a.PatientName,
                                PatientID = a.PatientID,
                                PatientSex = a.PatientSex,
                                Frames = b.Frames,
                                SeriesId = b.Id,
              
使用事務(wù)的操作
            List<Sop> List = new List<Sop>(); ; 
            using (MyDbContext db = new MyDbContext())
            {
                //查詢數(shù)據(jù)
                IQueryable<Sop>  query = db.Sop.FromSqlRaw($"select * from sop where Series_Id in (select Id from series where Study_Id = {studyId})");
                List = query.ToList();
                using (var transaction =db.Database.BeginTransaction())
                {
                    int effectRow = 0;
                    try
                    {

                        effectRow =db.Database.ExecuteSqlRaw(@"delete from sop where Series_Id in (
                                select Id from series where Study_Id = " + studyId + @")");
                        //transaction.CreateSavepoint("BeforeDelete"); //可以創(chuàng)建回滾點(diǎn);出錯(cuò)后可以指定DB操作回滾到此前
                        db.Database.ExecuteSqlRaw(@"delete from series where Id=" + studyId);
                        //transaction.CreateSavepoint("BeforeDelete2"); //可以打開(kāi)此代碼,這里是創(chuàng)建的還原點(diǎn)2
          

當(dāng)然,針對(duì)MyDbContext,我們也可以使用在Startup.cs注冊(cè),使用IOC的方式去使用。這種資料網(wǎng)上也非常多。
最后,在項(xiàng)目調(diào)試時(shí),如果想實(shí)時(shí)查看EF 生成的SQL語(yǔ)句確實(shí)不方便,不像SqlSugar那樣有一個(gè)tosql方法能直接看到。我目前沒(méi)有找到很好的方法,參考網(wǎng)上其他人給出方案,就是在VS的控制臺(tái)來(lái)輸出SQL語(yǔ)句,當(dāng)然,我們首先需要引入微軟的官方日志組件Microsoft.Extensions.Logging.Debug。
然后再數(shù)據(jù)上下文(這里是MyDBContext)類(lèi)中New一個(gè)日志工廠,在OnConfiguring方法中添加日志組件,這樣我們?cè)谡{(diào)試時(shí)就能在VS的調(diào)試輸出中看到生成的SQL語(yǔ)句。
Net Core中使用EF Core連接Mysql數(shù)據(jù)庫(kù)

EFCore逆向工程——生成實(shí)體類(lèi)
如果想逆向根據(jù)DB的表結(jié)構(gòu)來(lái)生成實(shí)體類(lèi),這里需要借助與微軟提供的包:Microsoft.EntityFrameworkCore.Tools
首先在NuGet中引入Microsoft.EntityFrameworkCore.Tools,然后VS中菜單選擇工具——》NuGet包管理器——》程序包管理器控制臺(tái)。在包管理器控制臺(tái)輸入如下命令:
Scaffold-DbContext 'Server=localhost;Database=您的數(shù)據(jù)庫(kù)名;charset=utf8;uid=賬號(hào);pwd=密碼;port=端口;' Pomelo.EntityFrameworkCore.MySql -OutputDir "輸出的目錄文件夾"
OutputDir 如果不提供的話會(huì)將實(shí)體類(lèi)生成在項(xiàng)目根目錄下,看個(gè)人需求。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-821498.html

到了這里,關(guān)于Net Core中使用EF Core連接Mysql數(shù)據(jù)庫(kù)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • .NET Core/.NET6 使用DbContext 連接數(shù)據(jù)庫(kù),SqlServer

    .NET Core/.NET6 使用DbContext 連接數(shù)據(jù)庫(kù),SqlServer

    安裝以下NuGet包 Microsoft.EntityFrameworkCore.SqlServer:SQL server 需要添加包 Microsoft.EntityFrameworkCore.Tools Newtonsoft.Json:用于Json格式轉(zhuǎn)換 創(chuàng)建一個(gè)實(shí)體類(lèi)來(lái)表示數(shù)據(jù)庫(kù)表。在項(xiàng)目中創(chuàng)建一個(gè)名為Customer.cs的文件,并添加以下代碼 創(chuàng)建一個(gè)數(shù)據(jù)庫(kù)上下文類(lèi),用于定義實(shí)體類(lèi)和數(shù)據(jù)庫(kù)連接

    2024年02月07日
    瀏覽(27)
  • NET Core 6.0 webapi 簡(jiǎn)單使用+連接數(shù)據(jù)庫(kù)

    NET Core 6.0 webapi 簡(jiǎn)單使用+連接數(shù)據(jù)庫(kù)

    ASP.NET core NET core 6.0 如何使用 在 Program.cs里面 添加對(duì)應(yīng)注釋 效果: Microsoft.EntityFrameworkCore.Sqlite Microsoft.EntityFrameworkCore.Sqlite.Core Newtonsoft.Json:用于Json格式轉(zhuǎn)換 添加測(cè)試Api Tips:這里用到ORM查詢語(yǔ)法 EntityFramework EF 常用增刪改查語(yǔ)句 運(yùn)行結(jié)果

    2024年02月09日
    瀏覽(24)
  • ASP.Net Core Web API結(jié)合Entity Framework Core框架(API的創(chuàng)建使用,接口前端權(quán)限設(shè)置,前端獲取API的Get,post方法)(程序包引用以及導(dǎo)入數(shù)據(jù)庫(kù))

    ASP.Net Core Web API結(jié)合Entity Framework Core框架(API的創(chuàng)建使用,接口前端權(quán)限設(shè)置,前端獲取API的Get,post方法)(程序包引用以及導(dǎo)入數(shù)據(jù)庫(kù))

    目錄 1. Web Api 程序包引用 2. Web Api 的創(chuàng)建與Http類(lèi)型的介紹 2.1?ASP.Net Core Web API項(xiàng)目的創(chuàng)建 2?.2? API接口的創(chuàng)建 2.3?HttpGet和HttpPost類(lèi)型的區(qū)別 3.接口權(quán)限設(shè)置 4.HttpGet方法和HttpPOst方法 5.前端中用HttpGet/Poset獲取接口數(shù)據(jù) 6.EF框架——配置數(shù)據(jù)庫(kù)鏈接字符串(即將數(shù)據(jù)庫(kù)中的表導(dǎo)入項(xiàng)

    2024年02月08日
    瀏覽(31)
  • 使用asp.net core web api創(chuàng)建web后臺(tái),并連接和使用Sql Server數(shù)據(jù)庫(kù)

    使用asp.net core web api創(chuàng)建web后臺(tái),并連接和使用Sql Server數(shù)據(jù)庫(kù)

    前言:因?yàn)橐獙?xiě)一個(gè)安卓端app,實(shí)現(xiàn)從服務(wù)器中獲取電影數(shù)據(jù),所以需要搭建服務(wù)端代碼,之前學(xué)過(guò)C#,所以想用C#實(shí)現(xiàn)服務(wù)器段代碼用于測(cè)試,本文使用C#語(yǔ)言,使用asp.net core web api組件搭建服務(wù)器端,并訪問(wèn)sql server 數(shù)據(jù)庫(kù)。 一、安裝Visual studio 2022 社區(qū)版,并安裝ASP.NET和

    2024年02月14日
    瀏覽(29)
  • EF Core實(shí)操,數(shù)據(jù)庫(kù)生成實(shí)體,遷移

    EF Core實(shí)操,數(shù)據(jù)庫(kù)生成實(shí)體,遷移

    大家好,我是行不更名,坐不改姓的宋曉剛,下面將帶領(lǐng)大家進(jìn)入C#編程EF Core數(shù)據(jù)庫(kù)基礎(chǔ)入門(mén)知識(shí),如何連接數(shù)據(jù)庫(kù),如何編寫(xiě)代碼,跟上我的步伐進(jìn)入EF Core數(shù)據(jù)庫(kù)下的世界。 家人們,如果有什么不懂,可以留言,或者加我聯(lián)系方式,一起進(jìn)入微軟技術(shù)的開(kāi)拓。 微信:153

    2024年01月22日
    瀏覽(21)
  • .net 連接MySql數(shù)據(jù)庫(kù) + 使用Microsoft.EntityFrameworkCore.Design自動(dòng)生成實(shí)體類(lèi) + 使用EFCore操作數(shù)據(jù)庫(kù)

    .net 連接MySql數(shù)據(jù)庫(kù) + 使用Microsoft.EntityFrameworkCore.Design自動(dòng)生成實(shí)體類(lèi) + 使用EFCore操作數(shù)據(jù)庫(kù)

    先準(zhǔn)備好一個(gè)mysql數(shù)據(jù)庫(kù)(我這里準(zhǔn)備的是test數(shù)據(jù)庫(kù),里面又準(zhǔn)備了兩張表,其中book表中只有兩個(gè)字段,Id(bigint類(lèi)型)和 Name(varchar類(lèi)型)) 使用VS新建一個(gè)asp.net core web api項(xiàng)目(我這里使用的框架是.net5.0的,確保版本對(duì)應(yīng)很重要) 打開(kāi)終端 進(jìn)到項(xiàng)目所在目錄(我這里解

    2024年02月07日
    瀏覽(32)
  • 遷移更新EF Core 中的sqlserver 數(shù)據(jù)庫(kù)提示0x80131904

    遷移更新EF Core 中的sqlserver 數(shù)據(jù)庫(kù)提示0x80131904

    Microsoft.Data.SqlClient.SqlException (0x80131904): A connection was successfully established with the server, but then an error occurred during the login process. (provider: SSL Provider, error: 0 - 證書(shū)鏈?zhǔn)怯刹皇苄湃蔚念C發(fā)機(jī)構(gòu)頒發(fā)的。) ?--- System.ComponentModel.Win32Exception (0x80090325): 證書(shū)鏈?zhǔn)怯刹皇苄湃蔚念C發(fā)機(jī)構(gòu)頒發(fā)的

    2024年02月16日
    瀏覽(22)
  • 如何使用 .Net Core 實(shí)現(xiàn)數(shù)據(jù)庫(kù)遷移 (Database Migration)

    如何使用 .Net Core 實(shí)現(xiàn)數(shù)據(jù)庫(kù)遷移 (Database Migration)

    當(dāng)我們?cè)诰帉?xiě)基于數(shù)據(jù)庫(kù)的應(yīng)用程序時(shí),隨著需求的增加和改變,我們需要升級(jí)我們的數(shù)據(jù)庫(kù),變更數(shù)據(jù)庫(kù)表的字段,當(dāng)我們的系統(tǒng)的不同版本被部署到了不同的客戶那里,在需要給客戶升級(jí)時(shí),我們?nèi)绾螌?shí)現(xiàn)數(shù)據(jù)庫(kù)模式 (schema) 的自動(dòng)升級(jí)呢? 傳統(tǒng)的管理辦法是針對(duì)每個(gè)數(shù)

    2024年02月05日
    瀏覽(27)
  • ASP.NET之 用Mysql驅(qū)動(dòng)連接數(shù)據(jù)庫(kù)

    ASP.NET之 用Mysql驅(qū)動(dòng)連接數(shù)據(jù)庫(kù)

    前言:上一節(jié)已經(jīng)用VisualStudio2019成功創(chuàng)建和運(yùn)行了ASP項(xiàng)目( https://mp.csdn.net/mp_blog/creation/editor/129413215 ),下面將進(jìn)行數(shù)據(jù)庫(kù)的連接 一,下載驅(qū)動(dòng)庫(kù),根JSP一樣需要一個(gè)Mysql驅(qū)動(dòng)包來(lái)支持.NET語(yǔ)言。官網(wǎng)下載鏈接: https://www.mysql.com/products/connector/ ? 二,安裝驅(qū)動(dòng)包? 選擇自定義

    2024年02月02日
    瀏覽(27)
  • .NET6.0 EF Core連接sql

    1、先導(dǎo)入四個(gè)包 Microsoft.EntityFrameworkCore Microsoft.EntityFrameworkCore.Relational Microsoft.EntityFrameworkCore.SqlServer Microsoft.EntityFrameworkCore.Tools 2、在程序包管理控制臺(tái)執(zhí)行 Scaffold-DbContext \\\"server=.;Integrated Security=true;database=DBStu\\\" Microsoft.EntityFrameworkCore.SqlServer -OutPutDir Models Models是你實(shí)體類(lèi)安放

    2024年02月06日
    瀏覽(27)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包