# [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
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up