天天看點

DotNetCore跨平台~EFCore連接配接Mysql的方式

在.net frameworks的ef裡連接配接mysql我們已經測試通過了,而在dotnet core裡的efCore上去連接配接mysql我們需要測試一下,并且在測試過程中出現了一些問題,當然最後也是解決了,下面總結一下,分享給大家!

mysql項目的依賴包

資料上下文和連接配接串

資料倉儲

添加子產品擴充

業務層注入

業務實作

Microsoft.EntityFrameworkCore

MySql.Data.EntityFrameworkCore

對于mysql的上下文和使用sql沒什麼兩樣,需要注意的是要添加的SSL的否定,否則同時會有異常出來

MySql.Data.MySqlClient.MySqlException: The host localhost does not support SSL connections.

public partial class MySqlERPContext : DbContext, IERPContext

    {

        protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)

        {

            optionsBuilder.UseMySQL(@"Server=localhost;database=ef;uid=root;pwd=root;SslMode=None");

            base.OnConfiguring(optionsBuilder);

        }

        public DbSet<system_users> system_users { get; set; }

        public DbSet<User> Users { set; get; }

    }

實作繼承基礎設施裡的EFRepository就可以了,我們需要為倉儲傳遞一個資料上下文進來,就是上面定義的Mysql的上下文對象,這樣你的倉儲就可以操作這個上下文了.

我們基礎設施裡有一些已經實作的功能,我們會做成擴充方法,友善以業務系統的使用,而和業務相關的對象,如業務倉儲,業務上下文可以在業務系統添加擴充,方法後期的注入工作,一般的業務擴充代碼如下

子產品的擴充實作之後,就是在業務系統初始化時注入它們,實作哪種方法就去注冊哪裡,一般在global或者startup裡去實作注入功能.

可以直接從子產品裡把對應的倉儲取出來,然後執行對應的curd操作即可

這樣我們在dotnet core裡通過efcore去操作mysql資料庫就完成了,需要注意的是,在mysql連接配接串中,一定要添加SslMode=None這個屬性,否則會啟用ssl連結!