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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

记一次EF Core连接MySql、Oracle

發布時間:2023/12/4 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 记一次EF Core连接MySql、Oracle 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

點擊上方“Dotnet9”添加關注哦

上上個月寫的一篇文章,今天有同事問我使用EF Core連接MySql和Oracel的問題,我把這篇文章直接甩給了他。

下面是正文:

這幾天研究了EF Core對MySql、Oracle的操作,包括連接、簡單查詢等,操作是簡單的,就是使用Nuget庫折騰了會兒,這里作下記錄,方便以后使用時查詢。

行文目錄導航

  • 開頭

  • EF Core之MySql使用的Nuget庫

  • EF Core之Oracle使用的Nuget庫

  • 共享的實體定義

  • 數據種子

  • 查詢,并簡單使用EF Plus輔助查詢

  • 結尾

  • 1. 開頭

    做些技術預言,方便后面使用,目的就是這么純粹,新手可以看看本文,大佬可以略過…

    2. EF Core之MySql使用的Nuget庫

    MySql作為開源的一個關系型數據庫,使用的企業很多,下面是需要引入的Nuget庫截圖:

    MySql依賴包
  • Design和Tools庫不用多說,用于數據遷移的。

  • MySql.Data和Pomelo.EntityFrameworkCore.MySql是MySql驅動,版本盡量用截圖所示,新庫可能會有問題,愛折騰的可以嘗試下。

  • Z.EntityFramework.Plus.EFCore是加強實體查詢使用的。

  • 3. EF Core之Oracle使用的Nuget庫

    Oracle也有免費版本,下面是Nuget庫截圖:

    Oracle依賴包
  • Design和Tools庫遷移使用。

  • Oracle.EntityFrameworkCore是Oracle驅動,版本也盡量使用截圖上的版本。

  • 4. 共享的實體定義

    簡單的使用學生、課程、學生選課信息三個實體:

    [Table("Student")] public?class?Student {[Column("ID")]public?int?ID?{?get;?set;?}[Key,?Column("Name"),?MaxLength(25)]public?string?Name?{?get;?set;?}}[Table("Course")] public?class?Course {[Column("ID")]public?int?ID?{?get;?set;?}[Key,?Column("Name"),?MaxLength(25)]public?string?Name?{?get;?set;?} }[Table("StudentCourse")] public?class?StudentCourse {[Column("StuID")]public?int?StuID?{?get;?set;?}[Column("CourseID")]public?int?CourseID?{?get;?set;?} }

    5. 數據種子

    首先定義StudentDbContext,代碼如下:

    public?class?StudentDbContext?:?DbContext {protected?override?void?OnConfiguring(DbContextOptionsBuilder?optionsBuilder){optionsBuilder.UseMySql(@"server=[服務器IP地址];user=[用戶名];database=[數據庫名];port=[端口,默認是3306];password=[數據庫密碼];SslMode=None");}protected?override?void?OnModelCreating(ModelBuilder?modelBuilder){modelBuilder.Entity<Student>().HasKey(t?=>?t.ID);modelBuilder.Entity<Course>().HasKey(t?=>?t.ID);modelBuilder.Entity<StudentCourse>().HasKey(t?=>?new?{?t.StuID,?t.CourseID?});base.OnModelCreating(modelBuilder);modelBuilder.Seed();}public?DbSet<Student>?Students?{?get;?set;?}public?DbSet<Course>?Courses?{?get;?set;?}public?DbSet<StudentCourse>?StudentCourses?{?get;?set;?}}

    上面OnConfiguring中使用的MySql連接,Oracle修改如下:

    optionsBuilder.UseOracle(@"Data?Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=[數據庫IP地址])(PORT=[數據庫端口,默認是1521]))(CONNECT_DATA=(SERVICE_NAME=[服務名,默認是orcl])));Persist?Security?Info=True;User?ID=[用戶名];Password=[密碼]",b?=>?b.UseOracleSQLCompatibility([Oracle版本,11就寫"11"]));

    OnModelCreating方法中除了設置各實體對應數據表的主鍵外,還調用了數據種子擴展方法,方便程序測試之前寫入測試數據,下面是擴展方法定義:

    public?static?class?ModelBuilderExtensions {public?static?void?Seed(this?ModelBuilder?modelBuilder){modelBuilder.Entity<Student>().HasData(new?Student?{?ID?=?1,?Name?=?"張三"?},new?Student?{?ID?=?2,?Name?=?"李四"?},new?Student?{?ID?=?3,?Name?=?"王五"?});modelBuilder.Entity<Course>().HasData(new?Course?{?ID?=?1,?Name?=?"語文"?},new?Course?{?ID?=?2,?Name?=?"數學"?},new?Course?{?ID?=?3,?Name?=?"英語"?});modelBuilder.Entity<StudentCourse>().HasData(new?StudentCourse?{?StuID?=?1,?CourseID?=?1?},new?StudentCourse?{?StuID?=?1,?CourseID?=?2?},new?StudentCourse?{?StuID?=?2,?CourseID?=?3?},new?StudentCourse?{?StuID?=?3,?CourseID?=?1?},new?StudentCourse?{?StuID?=?3,?CourseID?=?3?});} }

    6. 查詢,并簡單使用EF Plus輔助查詢

    簡單的查詢測試代碼如下,不多說,直接上代碼吧,我假如你看得懂,不懂加我微信、微信公眾號、文末留言:

    static?void?Main(string[]?args) {using?(var?db?=?new?StudentDbContext()){//?EF?Plus?filterdb.Filter<Student>(s?=>?s.Where(x?=>?x.ID?>=?2));//?1、?EF?Core?joinvar?lst?=?from?sc?in?db.StudentCoursesjoin?s?in?db.Students?on?sc.StuID?equals?s.IDjoin?c?in?db.Courses?on?sc.CourseID?equals?c.IDselect?new{StudentID?=?s.ID,StudentName?=?s.Name,CourseID?=?c.ID,CourseName?=?c.Name};foreach?(var?sc?in?lst){Console.WriteLine($"StudentID:?{sc.StudentID},?Student?Name:?{sc.StudentName},?Course?ID:?{sc.CourseID},?Course?Name:?{sc.CourseName}");}}Console.ReadKey(); }

    7. 結尾

    本文就是個簡單記錄,代碼都經過測試,沒有問題,使用VS 2019\.NET?Core 3.1開發測試。

    關注Dotnet9,分享更多好文

    如果本文對你有用,

    不妨點個“在看”或者轉發朋友圈

    ????點擊閱讀原文

    總結

    以上是生活随笔為你收集整理的记一次EF Core连接MySql、Oracle的全部內容,希望文章能夠幫你解決所遇到的問題。

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