1. 程式人生 > >SimplCommerce(asp.net core),把MSSql換成MySQL

SimplCommerce(asp.net core),把MSSql換成MySQL

SimplCommerce,一個不錯的商城原始碼,拿來玩一玩,使用mysql

開始之前先核對一下版本把,我是2018.10.20號下載的版本,一直在研究hyper-h這個虛擬機器

.net sdk 2.1.304,我現在在github上已經要2.1.402了,我電腦是這個版本的sdk

ide建議使用2017,更新到最新版本,因為低版本對sdk的支援有點坑爹,載入不到最新版的sdk就要報錯(mac上給我的感覺)我的ide是vs2017 (v15.8.8)

這些東西在github介紹上也有提到,也提到了執行步驟,如果是mssql就按他的步驟我是一步完成了的;可以先嚐試mssql跑起來先

========================================

接下來就處理更換資料庫的工作

提供好mysql的服務,最好是你本機能夠連上,避免發生錯誤後的排錯工作

1.也是更新連線字串,我的連線字串如下

server=192.168.31.117;database=SimplCommerce;uid=root;pwd=123;charset=utf8;SslMode=None

注意你資料庫的字符集

2.安裝mysql的包,有的時候安裝不上去,也是因為vs版本太低,沒有識別到最新的sdk導致提示依賴的版本對不上的問題

Install-Package Pomelo.EntityFrameworkCore.MySql

3.修改mssql支援改為mysql,這裡需要修改兩個地方,可以用全域性搜尋,搜尋連線字串使用的地方

Ctrl+Shift+F,搜尋“DefaultConnection”,結果可能會出現幾個,但是有兩個是比較眼熟的

找到 Program.cs 檔案

//方法:SetupConfiguration(WebHostBuilderContext hostingContext, IConfigurationBuilder configBuilder)

//找到如下
//configBuilder.AddEntityFrameworkConfig(options =>
//options.UseSqlServer(configuration.GetConnectionString("DefaultConnection"))
//);



//=======改為
configBuilder.AddEntityFrameworkConfig(options =>
    options.UseMySql(configuration.GetConnectionString("DefaultConnection"),mysqlOptions =>{
        mysqlOptions.ServerVersion(new System.Version(5, 7, 24), ServerType.MySql);
    })
);

找到 ServiceCollectionExtensions.cs 檔案

//方法 AddCustomizedDataStore(this IServiceCollection services, IConfiguration configuration)

//這個直接改把,按上面的格式太麻煩了

 //Func<DbContextOptionsBuilder, DbContextOptionsBuilder> getDbContextOptionsBuilder2 = (options) =>
//{
//    return options.UseSqlServer(configuration.GetConnectionString("DefaultConnection"),
//        b => b.MigrationsAssembly("SimplCommerce.WebHost"));
//};

Func<DbContextOptionsBuilder, DbContextOptionsBuilder> getDbContextOptionsBuilder = (options) =>{
    return options.UseMySql(configuration.GetConnectionString("DefaultConnection"), mysqlOptions =>{
        mysqlOptions.ServerVersion(new Version(5, 7, 24), ServerType.MySql);
        mysqlOptions.MigrationsAssembly("SimplCommerce.WebHost");
    });
};

services.AddDbContextPool<SimplDbContext>(options =>getDbContextOptionsBuilder(options));
return services;

好了,結束了,按F5,我的已經跑起來了,這是我第二天回想昨天的步驟寫的,如有疑問可以郵箱我或者給我留言

[email protected]