// Query Model usingvar conn = new SqlConnection("ConnectionString"); var sql = "SELECT * FROM Users"; var results = conn.Query<Users>(sql).ToList();
1 2 3 4 5
// Query Anonymous usingvar conn = new SqlConnection("ConnectionString"); var sql = "SELECT * FROM Users"; var results = conn.Query(sql).ToList(); // 這時候 results 的型別會是 dynamic
1 2 3 4 5 6 7 8
// QueryFirst usingvar conn = new SqlConnection("ConnectionString"); var sql = "SELECT * FROM Users"; var results = conn.QueryFirst<Users>(sql); // QueryFirst() 取回符合條件的第一筆資料,如果沒有符合會拋出錯誤 // QueryFirstOrDefault() 會將符合條件的第一筆回傳回來,如果沒有符合回傳 null // QuerySingle() 查詢唯一符合條件的資料,如果沒有符合或符合條件為多筆時會拋出錯誤 // QuerySingleOrDefault(),查詢唯一符合條件的資料,如果沒有符合回傳 null,但如果符合條件為多筆時會拋出錯誤
1 2 3 4 5 6 7 8
// QueryMultiple var sql = "SELECT * FROM Users; SELECT * FROM Account;"; usingvar conn = new SqlConnection("ConnectionString"); usingvar results = conn.QueryMultiple(sql); // 第一段 SQL var users = results.Read<Users>().ToList(); // 第二段 SQL var accounts = results.Read<Account>().ToList();
使用 Parameter 參數查詢
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
// Anonymous // 單一參數 usingvar conn = new SqlConnection("ConnectionString"); var results = conn.Execute( "MyStoredProcedure", new { Param1 = 1, Param2 = " ImParam" }, commandType: CommandType.StoredProcedure );
// 多組參數 usingvar conn = new SqlConnection("ConnectionString"); var results = conn.Execute( "MyStoredProcedure", new[] { new { Param1 = 1, Param2 = " ImParam" }, new { Param1 = 2, Param2 = " N2" } }, commandType: CommandType.StoredProcedure );
1 2 3 4 5 6 7 8 9
// Dynamic usingvar conn = new SqlConnection("ConnectionString"); // 設定參數 var parameters = new DynamicParameters(); parameters.Add("@Param1", "abc", DbType.String, ParameterDirection.Input); parameters.Add("@Return1", dbType: DbType.Int32, direction: ParameterDirection.ReturnValue); conn.Execute("MyStoredProcedure", parameters, commandType: CommandType.StoredProcedure); int result = parameters.Get<int>("@Return1"); // DynamicParameters 也可以接回 Return 值
1 2 3 4
// List usingvar conn = new SqlConnection("ConnectionString"); string sql = "SELECT * FROM Users WHERE UserId IN @ids"; var results = conn.Query<Users>(sql, new { ids = new[] { "001", "002", "004", "008" } }).ToList();
1 2 3 4 5 6 7 8
// String usingvar conn = new SqlConnection("ConnectionString"); var sql = "SELECT * FROM Users WHERE UserId = @id"; var results = conn.Query<Users>( sql, new { id = new DbString { Value = "002", IsFixedLength = false, Length = 3, IsAnsi = true } } ).ToList(); // Dapper 如果使用暱名型別預設 String 會轉成 NVARCHAR,效能會稍差,指定型別效能比較好