1、安裝對應的Nuget包
Oracle => Oracle.EntityFrameworkCore 【目前為止是預發行版本2.19.0-beta4】
SqlServer => Microsoft.EntityFrameworkCore 【目前為止穩定版本2.2.4】
2、修改對應的DbContext文件,增加下面的代碼
1 /// <summary> 2 /// 判斷如果是Oracle,需要執行Schema 3 /// </summary> 4 /// <param name="modelBuilder"></param> 5 6 protected override void OnModelCreating(ModelBuilder modelBuilder) 7 { 8 //判斷當前數據庫是Oracle 需要手動添加Schema(DBA提供的數據庫賬號名稱) 9 if (this.Database.IsOracle()) 10 { 11 modelBuilder.HasDefaultSchema("NETCORE"); 12 } 13 base.OnModelCreating(modelBuilder); 14 }
3、添加Oracle的字符串的配置
4、修改字符串的鏈接配置
5、修改為使用Oracle
6、使用命令遷移
這里會報標識符過長的錯誤,這邊根據具體情況進行修改
這邊是因為使用了GUID導致的,Oracle中表名,列名,標識列字符不能超過30個字符
記錄:
.net core對數據庫的支持
https://docs.microsoft.com/en-us/ef/core/providers/?tabs=dotnet-core-cli
擴展:
1. dbContext.Database.EnsureDeleted(); dbContext.Database.EnsureCreated();用這兩個方法,可以簡單粗暴的將數據庫刪除在重建,就不用手動輸入命令進行遷移,這樣做很顯然會導致數據庫中已有的數據丟失。
2. 我們也可以使用dbContext.Database.Migrate()代替輸入“Update-DataBase”命令而在程式中自動遷移,但是沒有找到替代“Add-Migration”的命令。