iT邦幫忙

2022 iThome 鐵人賽

DAY 18
0
Software Development

.NET Core與React組合開發技系列 第 18

.NET Core與React組合開發技_第18天_EF Core模型觀念及配置

  • 分享至 

  • xImage
  •  

到了要將產品詳細資訊存儲在DB中的階段了

https://ithelp.ithome.com.tw/upload/images/20220929/20107452p8jDqLhugh.png

基本上我們在當今開發潮流已經習慣使用ORM相關不用自行寫SQL的Data Access框架了
ORM(Object-Relational Mapping)
可以理解為關聯式資料庫和物件之間根據某種規則而建立的一套映射關係,取代
底層資料庫操作而透過物件的coding來操作,主要都是透過物件的形式在做DB存取更新刪除的相關操作。

https://ithelp.ithome.com.tw/upload/images/20220929/201074529XLlmDFcYV.png

我們選擇使用 Entity Framework Core 作為這個專案的ORM開發策略選定
這些獨立模型是我們想要存儲在資料庫中的實際資料。
根據回傳的資料種類(列表或單筆記錄)在特定頁面做資料綁定回傳

在此就需要確認本機有安裝SQL Server資料庫(以及相應的SSMS IDE)了
我先假設你已經安裝好了Express免費社群版本的MS SQL

在此使用Code First開發模式

我們在此去新建一個目錄Domain (資料庫存取有關的資料屬於領域知識)
在Domain目錄下

新建和一個Model Entity Product.cs
~\Domain\Product.cs

namespace MyReact1.Domain
{
    public class Product
    {
        public int Id { get; set; }
        public string Name { get; set; }
        public string Description { get; set; }
        public decimal Price { get; set; }

    }
}

一個StoreContext (DB上下文的class)
~\Domain\StoreContext.cs

using Microsoft.EntityFrameworkCore;

namespace MyReact1.Domain
{
    public class StoreContext : DbContext
    {

        public StoreContext(DbContextOptions<StoreContext> options) : base(options) { }

        public DbSet<Product> Products { get; set; }

    }
}

記得nuget套件安裝好
Microsoft.EntityFrameworkCore
Microsoft.EntityFrameworkCore.sqlserver
https://ithelp.ithome.com.tw/upload/images/20220930/20107452zLXbzjU7rA.png

在SQL 配置上也要記得把connection string跟DB相應實體及資料庫給準備
https://ithelp.ithome.com.tw/upload/images/20220930/20107452MIV5gOmWVn.png

using Microsoft.EntityFrameworkCore;
using MyReact1.Domain;
using MyReact1.Services;

var builder = WebApplication.CreateBuilder(args);

// Add services to the container.
builder.Services.AddCors(options =>
{
    options.AddPolicy("any", builder =>
    {
        //允許任何不同來源的站台應用存取
        builder.SetIsOriginAllowed(_ => true)
        .AllowAnyMethod()
        .AllowAnyHeader()
        .AllowCredentials();
    });
});
var connection = @"Server=.\SQLExpress;Database=DbStoreTest;uid=admin;pwd=rootroot";
builder.Services.AddDbContext<StoreContext>(options => options.UseSqlServer(connection));

builder.Services.AddScoped<ProductService>();
builder.Services.AddControllersWithViews();

var app = builder.Build();

// Configure the HTTP request pipeline.
if (!app.Environment.IsDevelopment())
{
    // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
    app.UseHsts();
}

app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
app.UseCors("any");

app.MapControllerRoute(
    name: "default",
    pattern: "{controller}/{action=Index}/{id?}");

app.MapFallbackToFile("index.html"); ;

app.Run();


上一篇
.NET Core與React組合開發技_第17天_重構_從controller抽離業務邏輯
下一篇
.NET Core與React組合開發技_第19天_進行DB Migration
系列文
.NET Core與React組合開發技30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言