teleriktelerik-open-access

Telerik Data Access - Argument Null Exception (ConverterName)


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using VideoWebsite.DataAccess;

namespace VideoWebsite.Models
{
    public class DatabaseModel
    {
        public int DatabaseID { get; set; }
        public string DatabaseName { get; set; }
   }

    public class DatabaseModelAccess
    {
        public static IEnumerable<DatabaseModel> All()
        {
            string queryString = @"SELECT 1 as DatabaseID, 'test' as DatabaseName";
            using (EntitiesModelA2 dbContext2 = new EntitiesModelA2())
            {
                IEnumerable<DatabaseModel> result = dbContext2.ExecuteQuery<DatabaseModel>(queryString); //Exception occurs here
                return result;
            }
        }
    }
}

I am trying to materialize the non persistent type. I am using the postgres database to generate the EntitiesModelA2.

Expanding this image would show that parametername is **convertername**

enter image description here


Solution

  • From Telerik Data Access perspective, the error appears because the query does not have a FROM clause (it does not comply to the basic syntax for SELECT statements).

    You can execute it like this:

    Option 1

    using (EntitiesModelA2 dbContext = new EntitiesModelA2())
    {
        using (IDbConnection connect = dbContext.Connection)
        {
            using (IDbCommand command = connect.CreateCommand())
            {
                command.CommandText = "SELECT 1 as DatabaseID, 'test' as DatabaseName FROM ExistingTableName";
                using (IDataReader reader = command.ExecuteReader())
                        {
                            while (reader.Read())
                            {
                                var result = new DatabaseModel();
                                result.DatabaseID = reader.GetInt32(0);
                                result.DatabaseName = reader.GetString(1);
                                //do something with the result
                            }
                        }
            }
        }
    }
    

    Option 2

    using (EntitiesModelA2 dbContext = new EntitiesModelA2())
    {
        var result = dbContext.ExecuteQuery<DatabaseModel>("SELECT 1 as DatabaseID, 'test' as DatabaseName FROM ExistingTableName");
    }