Метод динамического получения данных в Observablecollection из SQL (для любого класса моделей) - PullRequest
0 голосов
/ 15 мая 2019

Мне нужно получить данные для моих моделей из Pervasive SQL в виде наблюдаемых коллекций.Я хочу метод, который я могу реализовать в любом случае, поэтому я хочу передать свой класс модели в качестве параметра

public static ObservableCollection<???MyClass???> GetBackObservableCollection(string sqlcomm, int timeout, params object[] parameters)
    {
        ObservableCollection<???MyClass???> ocData = new ObservableCollection<???MyClass???> ();

        PsqlConnection dbConn = new PsqlConnection(PervasiveConnectionString);

        if (dbConn.State != ConnectionState.Open)
        {
            dbConn.Open();
        }

        PsqlCommand pSQLComm = new PsqlCommand(sqlcomm, dbConn);
        pSQLComm.CommandTimeout = timeout;

        for (int i = 0; i < parameters.Length; i++)
        {
            Type paramType= parameters[i].GetType();
            string paramTypeStr = Convert.ToString(paramType);

            if (paramTypeStr== "System.String")
            {
                string p = "p" + i;
                PsqlParameter par = new PsqlParameter(p, PsqlDbType.Char);
                par.Value = parameters[i];
                pSQLComm.Parameters.Add(par);
            }
            else if (paramTypeStr== "System.Int32")
            {
                string p = "p" + i;
                PsqlParameter par = new PsqlParameter(p, PsqlDbType.Integer);
                par.Value = parameters[i];
                pSQLComm.Parameters.Add(par);

            }
            else if (paramTypeStr== "System.Double")
            {
                string p = "p" + i;
                PsqlParameter par = new PsqlParameter(p, PsqlDbType.Double);
                par.Value = parameters[i];
                pSQLComm.Parameters.Add(par);
            }
        }

        using (PsqlDataReader dr = pSQLComm.ExecuteReader())
        {
            while (dr.Read())
            {
                //WHAT TO PUT IN HERE
            }
        }


        return ocData;
    }

Что мне нужно для передачи класса в качестве параметра - я написал здесь как ??? MyClass???.Это будет отличаться для разных моделей.Другое дело, как передать его в

using (PsqlDataReader dr = pSQLComm.ExecuteReader())
        {
            while (dr.Read())
            {
                //WHAT TO PUT IN HERE
            }
        }

, чтобы получить данные из sql в мои объекты класса.

Кто-нибудь может помочь с этим?

...