Как я могу вернуть список объектов, соответствующих записям в моей базе данных?

Я новичок в C#, и я борюсь со всем, пожалуйста, помогите. Вот что я пытаюсь сделать:

Создайте класс базы данных, который возвращает динамический список, который содержит экземпляры класса в зависимости от запрашиваемой таблицы:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data;
using System.Data.SqlClient;
using System.IO;
using System.Reflection;

    Class MYDatabase{

    public void main ()
    {
         String QueryString="select COLUMN_NAME, DATA_TYPE from information_schema.columns where table_name = 'mytable'";
         Object MyData=GetRsults(QueryString,"SchemaStructure");
    }

    public static Object GetResults(string QueryString, String ClassName)
    {

        SqlCommand cmd = new SqlCommand();
        SqlDataReader reader;

        cmd.CommandText = QueryString;
        cmd.CommandType = CommandType.Text;
        //assuming I already defined my connection
        cmd.Connection = Connection;

        Connection.Open();

        reader = cmd.ExecuteReader();

        Type ClassType = Type.GetType(ClassName);
        Type ListType = typeof(List<>).MakeGenericType(new Type[] { ClassType });
        Object Results = Activator.CreateInstance(ListType);
        Object SingleResult = Activator.CreateInstance(ClassType);

        while (reader.Read())
        {

            for (int i = 0; i < reader.FieldCount; i++)
            {
                var PropName= SingleResult.GetType().GetProperty(reader.GetName(i).ToString());
                //Convert.ChangeType(value, propertyInfo.PropertyType)
                PropName.SetValue(PropName,reader.GetValue(i).ToString(),null);

            }
            Results.Add(SingleResult);

        }
        Connection.Close();

        return Results;
    }
    }

class SchemaStructure
{
    public string COLUMN_NAME { set; get; }
    public string DATA_TYPE { set; get; }

}

Это не работает, линия Results.Add(SingleResult); дает мне сообщение

'object' не содержит определения для 'Add', и не найдено никакого метода расширения 'Add', принимающего первый аргумент типа 'object' (вы пропустили директиву using или ссылку на сборку?)

Может кто-нибудь, пожалуйста, помогите мне решить этот код?

Я открыт для других предложений, если мой подход вообще не имеет смысла.

Спасибо

1 ответ

Я думаю, прежде всего, я бы не катил свои объекты POCO вручную, когда у вас есть Entity Framework в вашем распоряжении. Используйте NuGet для добавления последней версии Entity в ваш проект, затем вы можете щелкнуть правой кнопкой мыши по своему проекту и использовать функцию Entity "Reverse Engineer Code First" для построения ваших моделей. Это, конечно, предполагает, что вы используете БД, к которой может подключиться Entity, и что БД уже создана...

Вы можете прочитать о EF здесь: http://msdn.microsoft.com/en-us/data/ef.aspx

Другие вопросы по тегам