# [112]天方科技 ASP.net core 教育訓練 1120316(c#教材簡介、SQL Server使用) ## C#微軟官方教材章節簡介 以WPF(Windows Presentation Foundation)為主,會與Web注重點略有不同   ### Module 1-Module 5 是C#程式語言說明 ### Module 1 C#語法簡介 ### Module 2 建立方法/函式 例外狀況處理:錯誤訊息回報 應用程式監控:紀錄程式運作log ### Module 3 圖形介面的事件處理 ### Module 4 建立型別 型別安全集合:泛型 ### Module 5 建立類別階層─使用繼承 物件導向特性─ 封裝:資料保存於物件內部,透過特定程序操作 繼承:一個類別會有**子類別**,子類別比父類別要更加具體化,類別只能繼承自一個類別,但是實作時可以多數,例犬(父)→中華田園犬(子) 多形:以一個基礎型別,操作所有繼承自此基礎型別的特定類型,各類型對相同訊息,做出不同動作 ### Module 6之後是使用.NET提供的物件做資料存取 ### Module 6 本地端資料讀寫 ### Module 7 存取資料庫 ### Module 8 遠端存取資料:透過Http、Client、Web Request等方式,存取遠端Json、XML、Html資料 ### Module 9 同**Module 3**進階語法使用 ### Module 10 改善應用程式效率─同步、非同步、多工等 ### Module 11 介紹不受控碼(Unmanned code):不受 .NET Framework環境管理的程式 參考: [**什麼是 Managed 程式碼?**](https://learn.microsoft.com/zh-tw/dotnet/standard/managed-code) ### Module 12 可重複使用型別 組建:使用VS建立專案時,編譯後會產生 .exe或者 .dll檔,這兩個檔案是 .NET執行時的基本單位,每個獨立編譯的檔案,都可以透過 .exe/.dll 合成組建成應用程式,本章介紹不透過VS工具如何製作程式產生器 ### Module 13 介紹 .NET資料加密/解密 參考: [**微軟官網學習C#**](https://learn.microsoft.com/zh-tw/dotnet/csharp/) ## SQL Server ### Table關聯圖建立  ### 選擇table   ### 關聯F Key,將主資料表要關聯的欄位點擊拖曳至目標資料表(無須對準欄位)  ### 欄位名稱一樣會自動鎖定欄位   ### 完成  ### F Key有設定會影響EF Core Tool 的反向工程結果,DbContext增加此設定   ### 主資料表(s30_student)設定增加與目標資料表的關聯   ### 目標資料表(s90_class)增加主資料表設定   ### DB刪除F Key後,專案設定不改,依然可以正常運作  ### 要Get兩個資料表的資料,在專案有使用F Key的設定下,可使用`Include()`語法 ```csharp= //s30_studentController.cs [HttpGet] public async Task<ActionResult<IEnumerable<s30_student>>> Gets30_student() { if (_context.s30_student == null) { return NotFound(); } return await _context.s30_student.Include(a => a.cls).ToListAsync(); //cls是s30_student.cs內的屬性 } ``` ```csharp= //s30_student.cs public virtual s90_class cls { get; set; } ```  ### 此時使用Swagger測試Get功能,出現產生Json時有無窮迴圈的error 因為在EntityType s30_student和s90_class裡都有去撈取對方資料的屬性,所以執行Get動作時,就會不停互相取資料 ```csharp= //s30_student.cs public virtual s90_class cls { get; set; } ``` ```csharp= //s90_class.cs public virtual ICollection<s30_student> s30_student { get; } = new List<s30_student>(); ```  ### 解決方法是在Program.cs檔加入以下程式碼 ```csharp= //取代原先builder.Services.AddControllers() builder.Services.AddControllers().AddJsonOptions(x => x.JsonSerializerOptions.ReferenceHandler = ReferenceHandler.IgnoreCycles); //AddControllers():.NET Core Controllers路徑處理方式 //AddJsonOptions:產生Json的相關選項 //JsonSerializerOptions:Json序列化選項 //ReferenceHandler:Json序列化參考處理器 //IgnoreCycles:忽略迴圈 ```   ### SQL Server→管理→SQL Server記錄檔,可查看Log檔  ### 紀錄連線相關訊息,例如某帳號登入失敗,可檢查是哪個帳號,且原因為何  ### SQL Server→安全性→登入→選擇帳號右鍵→屬性  ### 登入屬性→使用者對應,可設定帳號對資料庫的使用權限 
×
Sign in
Email
Password
Forgot password
or
Sign in via Google
Sign in via Facebook
Sign in via X(Twitter)
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
Continue with a different method
New to HackMD?
Sign up
By signing in, you agree to our
terms of service
.