XekuII 代碼生成
Overview
從 entities/*.xeku.yaml 生成後端 Business Objects、API Controllers 與前端產物,並驗證與更新資料庫。
Preflight
powershell
# .NET SDK dotnet --version # 確認 entities Get-ChildItem -Path entities -Filter "*.xeku.yaml" -Recurse
Cleanup Old Outputs
powershell
Remove-Item -Path "XekuII.ApiHost/BusinessObjects/*.Generated.cs" -Force -ErrorAction SilentlyContinue Remove-Item -Path "XekuII.ApiHost/API/*Controller.Generated.cs" -Force -ErrorAction SilentlyContinue Remove-Item -Path "xekuii-web/src/generated/types/*.generated.ts" -Force -ErrorAction SilentlyContinue Remove-Item -Path "xekuii-web/src/generated/schemas/*.generated.ts" -Force -ErrorAction SilentlyContinue Remove-Item -Path "xekuii-web/src/generated/api/*.generated.ts" -Force -ErrorAction SilentlyContinue Remove-Item -Path "xekuii-web/src/generated/pages" -Recurse -Force -ErrorAction SilentlyContinue Remove-Item -Path "xekuii-web/src/generated/routes.generated.tsx" -Force -ErrorAction SilentlyContinue Remove-Item -Path "xekuii-web/src/generated/navigation.generated.ts" -Force -ErrorAction SilentlyContinue
Generate
使用 XekuII.Generator(推薦)
powershell
# BO + API Controller dotnet run --project XekuII.Generator -- ./entities ` --output ./XekuII.ApiHost/BusinessObjects ` --controllers ./XekuII.ApiHost/API # BO + API + 前端 dotnet run --project XekuII.Generator -- ./entities ` --output ./XekuII.ApiHost/BusinessObjects ` --controllers ./XekuII.ApiHost/API ` --frontend ./xekuii-web/src/generated
使用 XekuII.CLI
powershell
XekuII.CLI generate --entities=./entities ` --output=./XekuII.ApiHost/BusinessObjects ` --api --api-output=./XekuII.ApiHost/API
Validate
powershell
Get-ChildItem -Path "XekuII.ApiHost/BusinessObjects" -Filter "*.Generated.cs" Get-ChildItem -Path "XekuII.ApiHost/API" -Filter "*Controller.Generated.cs" Get-ChildItem -Path "xekuii-web/src/generated" -Recurse -Filter "*.generated.*" dotnet build XekuII.ApiHost/XekuII.ApiHost.csproj cd xekuii-web && npm run build && cd ..
Update Database
powershell
dotnet run --project XekuII.ApiHost/XekuII.ApiHost.csproj ` -- --updateDatabase --forceUpdate --silent
Troubleshooting
- •Entities directory not found:確認
entities路徑與.xeku.yaml。 - •建置錯誤:檢查 referenced entity 是否存在。
- •Controller 路由衝突:避免與手寫 Controller 重複。
- •資料庫更新失敗:嘗試
--forceUpdate或重建 LocalDB。 - •命名空間不符:加上
--namespace。