DotNetCore跨平台~EFCore串連Mysql的方式

來源:互聯網
上載者:User

標籤:ref   代碼   使用   oid   實現繼承   模組   添加模組   soft   get   

回到目錄

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

  1. mysql項目的依賴包
  2. 資料內容和串連串
  3. 資料倉儲
  4. 添加模組擴充
  5. 業務層注入
  6. 業務實現

mysql項目的依賴包

  1. Microsoft.EntityFrameworkCore
  2. 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的內容物件,這樣你的倉儲就可以操作這個上下文了.

  public class ERPRepository<T> : EFRepository<T> where T : class    {        public ERPRepository() : base(new MySqlERPContext()) { }    }

添加模組擴充

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

    /// <summary>    /// 對於當前項目的模組化擴充    /// </summary>    public static class ModuleExtensions    {        /// <summary>        /// 註冊一個資料倉儲        /// </summary>        /// <param name="configuration"></param>        /// <returns></returns>        public static ModuleManager UseErpRepository(this ModuleManager configuration)        {            configuration.RegisterGenericModule(                typeof(IRepository<>),                typeof(ERPRepository<>));            return configuration;        }        /// <summary>        /// 註冊一個資料內容        /// </summary>        /// <param name="configuration"></param>        /// <returns></returns>        public static ModuleManager UseErpContext(this ModuleManager configuration)        {            configuration.RegisterModule<IERPContext, MySqlERPContext>();            return configuration;        }    }

業務層注入

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

        //註冊模組            ModuleManager.Create()                         .UseAutofac()                         .UseESBIoC()                         .UseErpContext()                         .UseErpRepository();

業務實現

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

       ModuleManager.Resolve<IRepository<User>>().Insert(new Api.User            {                Name = "two"            });

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

感謝各位閱讀!

回到目錄

DotNetCore跨平台~EFCore串連Mysql的方式

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.