Visual Studio 2019
Oracle 12c 使用 Docker 建立 Oracle 12c & 新增使用者建立範例資料庫
.NET Core 3.1
選擇API,3.1版本
資料庫來源:使用 Docker 建立 Oracle 12c & 新增使用者建立範例資料庫
package manager輸入:
Scaffold-DbContext "User Id=ot;Password=yourpassword;Data Source=localhost:1521/ORCLCDB.localdomain;" Oracle.EntityFrameworkCore -OutputDir Data -CoNtext DataContext
新增的資料夾(Data)與檔案
EF Core透過繼承DbContext的DataContext與資料庫溝通。
其他的CS檔,則一一對應到資料庫的表格。
在DataContext中,我們不需要OnConfiguring方法,刪掉。
在Startup.cs中的ConfigureServices方法,註冊連線服務。
可以在其他地方利用DI(Dependency Injection)的方式,使用該服務。
public void ConfigureServices(IServiceCollection services)
{
services.AddDbContext<DataContext>(options => options.UseOracle(Configuration.GetConnectionString("DefaultConnection")));
services.AddControllers();
}
連線字串在appsetting.json中設定
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft": "Warning",
"Microsoft.Hosting.Lifetime": "Information"
}
},
"ConnectionStrings": {
"DefaultConnection": "User Id=ot;Password=yourpassword;Data Source=localhost:1521/ORCLCDB.localdomain;"
},
"AllowedHosts": "*"
}
新增Controllers,空白or執行讀取/寫入動作的API都可以。
ValuesController
[Route("[controller]")]
[ApiController]
public class ValuesController : ControllerBase
{
private readonly DataContext _db;
public ValuesController(DataContext db)
{
_db = db;
}
[HttpGet]
public IActionResult Get()
{
var values = _db.Customers.ToList();
return Ok(values);
}
}
在建構式中,將DataContext注入(DI DependencyInjection),產生實體 db,並將db賦值給_db。
再使用_db對資料庫操作。
在專案中開啟命令提示字元,輸入:
dotnet watch run
執行並監看專案:
監聽兩個port,https://localhost:5001 & http://localhost:5000
開啟Postman,在Setting將SSL關閉。
不然會收不到任何response。
使用Http GET取得https://localhost:5001/values 或 http://localhost:5000/values 的response: