Użyj SqlDataReader w F #

W C # używam skryptów sql do dodawania danych do Listy, gdzie T byłoby klasą z polami / właściwościami zamapowanymi na skrypt sql.

Jak mogłem to zrobić w F #? Ten utwór wykorzystuje procedurę zapisaną w standardowy sposób.

using (conn)
{
    conn.Open();
    using (SqlCommand cmd = new SqlCommand("dbo.query_here", conn))
    {
    cmd.CommandText = "dbo.query_here";
    cmd.CommandType = System.Data.CommandType.StoredProcedure;
    cmd.CommandTimeout = 600;
    cmd.Parameters.Add(new SqlParameter("@x1", Convert.ToString(x)));
    cmd.Parameters.Add(new SqlParameter("@y1", y));
    cmd.Parameters.Add(new SqlParameter("@z1", z));
    SqlDataReader reader = cmd.ExecuteReader();
    while (reader.Read())
    {
        MyListOfClasses.Add(new MyDataClass(reader.GetInt32(reader.GetOrdinal("x"))           
                                            reader.GetDouble(reader.GetOrdinal("y")),
                                            reader.GetDouble(reader.GetOrdinal("a")),
                                            reader.GetDouble(reader.GetOrdinal("b"))));
    }
    reader.Close();
}
conn.Close();

Zdaję sobie sprawę, że F # nie jest tak proste, jak to możliwe, ale muszę w podobny sposób uzyskać te dane na listach F #. Wolałby także sugestie, które nie miałyby charakteru funkcjonalnego i były podobne do kodu C #.

W poprzednim wątku ktoś zasugerował użycie rekordów, ale nie dotyczyło to SqlDataReader. Byłoby lepiej mieć listę klas, więc mogę używać getterów i setterów w każdym elemencie.

Powinienem dodać przed nieuniknionymi komentarzami „dlaczego nie tylko użyć C #”. Oczywiście mogę używać C #, ale odkrywam możliwości pisania algorytmów w F # i aby to zrobić, muszę pobrać moje surowe dane z SQL Server.

questionAnswers(4)

yourAnswerToTheQuestion