.NET Core からは ODBC で接続するしかない古過ぎる SQL Server 相手でも、System.Data.Odbc だったら Dapper が使えた。
using var connection = new OdbcConnection(connectionString); connection.Open(); // ODBC で名前付きパラメータが使えるのはストアドプロシージャだけだったので、 // 通常の SQL では 1 から始まるパラメータ名をつける必要がある。 var param = new DyamicParameters(); param.Add("@1", DateTime.Today.AddMonths(-1)); param.Add("@2", DateTime.Today); // ODBC ではパラメータをバインドする箇所には ? を使う。 var result = connection.Query<Book, Author, Book>( sql: @"SELECT * FROM Books AS b INNER JOIN Authors AS a ON b.AuthorId = a.Id WHERE b.PublishedOn BETWEEN ? AND ? ORDER BY b.PublishedOn", map: (book, author) => { book.Author = author; return book; }, splitOn: "Id", param: param);
ちなみに、Entity Framework Core は ODBC 無理だった。困ったときは Dapper だな。