發表文章

目前顯示的是有「程式語言」標籤的文章

「Dapper」一個高效率輕量型 ORM 套件

圖片
一、前言 Dapper 是一個輕量化 ORM 的套件,可以寫出類似於 ADO.NET 的簡化語法,但保有 ORM 的特性,而相較於 Code First , Dapper 較為輕巧,因此筆者會依照專案的特性使用。 二、開發環境 整合開發環境:Visual Studio 2019 語言:C# .net framework:4.6.2 三、範例資料庫 圖、範例資料庫 四、讀取 範例皆使用 參數型 方式操作資料庫,避免 Sql Injection 問題。 圖、範例程式碼 原始碼(C#) var conn = WebConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString; using (var sb = new SqlConnection(conn)) { var data = sb.Query<Test>($"SELECT [a1],[a2] FROM [Test] where [Seq] = @Seq", new { Seq = 1 }).ToList(); return data; } 圖、執行結果 五、新增 範例皆使用 參數型 方式操作資料庫,避免 Sql Injection 問題。 圖、範例程式碼 原始碼(C#) var conn = WebConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString; using (var sb = new SqlConnection(conn)) { var items = new List<Test> { new Test { a1 = "a1", a2 = "a2" }, new Test { a1 = "a11", a2 = "a22" }, }; return sb.Execute($"INSERT INTO [Test] ([a1] ...

使用「SqlBulkCopy」進行大量資料寫入

圖片
一、前言 使用 Entity Framework 產生的資料庫模型進行大量資料的寫入是相當緩慢的,所幸認識到 SqlBulkCopy 類別,它可以有效率地進行大量資料的寫入,筆者因為它減少很多等待的時間。 二、開發環境 整合開發環境:Visual Studio 2019 語言:C# .net framework:4.6.2 三、範例資料庫 圖、範例資料庫 四、範例 專案結構 和 CSV結構 圖、範例 專案結構 和 CSV結構 五、範例 ViewModel 圖、範例 ViewModel 原始碼(C#) public class TestVm { public string a1 { get; set; } public string a2 { get; set; } } 六、SqlBulkCopy 程式碼 圖、SqlBulkCopy 程式碼 原始碼(C#) //取得資料庫連線字串 var conn = WebConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString; using (var sb = new SqlBulkCopy(conn)) { sb.DestinationTableName = "Test"; sb.WriteToServer(dt, DataRowState.Added); } 圖、執行結果 七、完整程式碼 public class BulkController : ApiController { [HttpGet] public string Add() { try { //csv 轉 ViewModel var data = GetCsvData(); //ViewModel 轉 DateTable var dt = GetDataTable(data); //取得資料庫連線字串 var conn = WebConfig...

使用「Code First」進行資料庫的讀取、新增、修改、刪除的操作

圖片
一、開發環境 整合開發環境:Visual Studio 2019 語言:C# .net framework:4.6.2 二、範例資料庫 圖、範例資料庫 三、 關聯模型 圖、關聯模型 四、讀取 圖、範例程式碼 原始碼(C#) using (var db = new DbTestContext()) { var data = db.Test.Where(x => x.a1 == "1").SingleOrDefault(); return data; } 圖、執行結果 五、新增 圖、範例程式碼 原始碼(C#) using (var db = new DbTestContext()) { var newData = new Test() { a1 = "a1", a2 = "a2", }; db.Test.Add(newData); return db.SaveChanges(); } 圖、執行結果 六、修改 圖、範例程式碼 原始碼(C#) using (var db = new DbTestContext()) { var data = db.Test.Where(x => x.a1 == "a1").SingleOrDefault(); data.a1 = "a3"; return db.SaveChanges(); } 圖、執行結果 七、刪除 圖、範例程式碼 原始碼(C#) using (var db = new DbTestContext()) { var data = db.Test.Where(x => x.a1 == "a3").SingleOrDefault(); db.Test.Remove(data); return db.SaveChanges(); } 圖、執行結果 八、相關連結 使用「Visual Studio 2019」建置一個有 Mvc 和 Web Api 架構的網站 使用「CsvHelpe...

使用「Entity Framework Tools」建立資料庫關聯模型

圖片
一、前言 Entity Framework 是微軟旗下基於 ADO.NET 的資料庫物件關聯技術(Object Relational Mapping 簡稱 ORM ),筆者使用它來減少撰寫新增、刪除、修改、查詢的 SQL 語法。 二、開發環境 整合開發環境:Visual Studio 2019 語言:C# .net framework:4.6.2 三、範例資料庫 圖、範例資料庫 四、專案結構 圖、專案結構 五、操作步驟 圖、選擇Vm資料夾後 滑鼠右鍵 > 選擇 加入 > 點選 新增項目 圖、選擇 ADO.NET 實體資料模型 > 輸入 名稱 圖、選擇 來自資料庫的 Code First 圖、點選 新增連結 圖、輸入 資料庫相關資訊 > 按 確定 圖、按 下一步 圖、選擇 資料表 、 檢視 > 按 完成 圖、產生模型 六、相關連結 使用「Visual Studio 2019」建置一個有 Mvc 和 Web Api 架構的網站 使用「CsvHelper」讀取、寫入 CSV 檔案 好用的資料庫管理工具「SQL Server 資料庫專案」 「NLog」與「Sql Server」資料庫的完美搭配 使用「ADO.NET」 進行資料庫的讀取、新增、修改、刪除的操作 使用「Entity Framework Tools」建立資料庫關聯模型 https://weitechshare.blogspot.com/2020/12/code-first.html 使用「SqlBulkCopy」進行大量資料寫入 「linqkit」動態組裝 LINQ 條件的好用套件 「Dapper」一個高效率輕量型 ORM 套件 七、參考 Visual Studio 中的 Entity Framework Tools

使用「ADO.NET」 進行資料庫的讀取、新增、修改、刪除的操作

圖片
一、前言 ADO.NET 是微軟旗下用來連接 資料來源 (例如 Sql Server、XML…等),並且可以讀取、新增、修改、刪除其中資料的技術。而後 微軟以 ADO.NET 為基礎 推出 Entity Framework ,以筆者的經驗來說,新的專案較常使用 Entity Framework ,但舊的專案則使用 ADO.NET ,因此為了方便記憶而撰寫文章。 二、開發環境 整合開發環境:Visual Studio 2019 語言:C# .net framework:4.6.2 三、範例資料庫 圖、範例資料庫 四、讀取 範例皆使用 參數型 方式操作資料庫,避免 Sql Injection 問題。 圖、範例程式碼 原始碼(C#) var cs = WebConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString; using (var sc = new SqlConnection(cs)) { sc.Open(); var cc = sc.CreateCommand(); cc.CommandText = $@"SELECT [a1],[a2] FROM [Test] where [Seq] = @Seq"; cc.Parameters.AddWithValue("@Seq", "1"); var ret = string.Empty; var reader = cc.ExecuteReader(); while (reader.Read()) { ret = $"a1={reader[0]},a2={reader[1]}"; } reader.Close(); return ret; } 圖、執行結果 五、新增 範例皆使用 參數型 方式操作資料庫,避免 Sql Injection 問題。 圖、範例程式碼 原始碼(C#) var cs = WebConfigurationManager.ConnectionStrings[...

使用「CsvHelper」讀取、寫入 CSV 檔案

圖片
一、開發環境 整合開發環境:Visual Studio 2019 語言:C# .net framework:4.6.2 二、 Nuget 圖、CsvHelper 套件。 三、專案結構介紹 圖、建立 Test 資料夾 > 建立 Read.csv ,內容如下 圖、建立 Vm 資料夾 > 建立 Test.cs ,貼上 Test類別 原始碼 原始碼 public class Test { public string a { set; get; } public string b { set; get; } } 四、讀取 CSV 檔案 圖、開啟 Program.cs 程式,輸入範例程式碼 範例程式碼 C# using (var reader = new StreamReader("Test\\Read.csv")) using (var csv = new CsvReader(reader, CultureInfo.InvariantCulture)) { var records = csv.GetRecords<Test>().ToList(); foreach (var r in records) { Console.WriteLine($"第{records.IndexOf(r) + 1}列, a={r.a}、b={r.b}"); } } 圖、執行結果 五、 寫入 CSV 檔案 圖、開啟 Program.cs 程式,輸入範例程式碼 範例程式碼 C# using (var fs = new FileStream("Test\\Create.csv", FileMode.OpenOrCreate)) using (var sw = new StreamWriter(fs)) using (var csv = new CsvWriter(sw, CultureInfo.InvariantCulture)) { var data = new List<Test>() { new Test { a="a1", b=...