通用方法GetTheData任何对象并将其返回到列表

时间:2018-02-11 13:53:28

标签: c# generics datatable

我创建了一个从表中获取所有数据的通用方法,并给我一个在运行时编译到指定对象的T列表。
我的连接,命令,过程完美地工作,但是当通过行循环向我的对象填充DataTable时,它会提示我一个错误:  专栏' ApplicationName'不属于表。 我试图从过去的答案中寻找解决方案,但这对我没有帮助。

任何帮助都会感激不尽! 这是我的代码:::

public List<T> GetElement<T>( string procedureName) where T : new()
        {
            string connectionString = ConfigurationManager.ConnectionStrings["MyConnectionString"].ConnectionString;
            SqlConnection connection = new SqlConnection(connectionString);
            connection.Open();
            SqlCommand command = new SqlCommand(procedureName, connection);
            command.CommandType = CommandType.StoredProcedure;
            DataTable dt = new DataTable();
            SqlDataAdapter da = new SqlDataAdapter(command);
            da.Fill(dt);
            List<T> ThisList = new List<T>();
            foreach (DataRow row in dt.Rows)
            {
                T tObject = new T();
                PropertyInfo[] properties = tObject.GetType().GetProperties();
                foreach (var prop in properties)
                {
                    if (tObject.GetType() != typeof(DBNull))
                    {
                        prop.SetValue(tObject, row[prop.Name], null);
                    }
                }
                ThisList.Add(tObject);
            }
            return ThisList;
        }

从另一个类调用该方法:

 public List<Application> GEtAllElements()
           {
          return TestMyCodeDAO.GetElement<Application>( "GetAllApplications");
           }

在program.cs(RunTime)中:

 protected void Page_Load(object sender, EventArgs e)
        {
            ApplicationBO.GEtAllElements();
        }

基于开发者请求:这是类应用程序。

public class Application 
{
#region private 
private int _ApplicationID;
private string _ApplicationName;
private string _ApplicationUrl;
private Byte[] _ApplicationImage
private string _ImageName;
#endregion
#region public 
public ApplicationID{get{return _ApplicationID;} 
set{_ApplicationID=value;}}
public string ApplicationName{get{return _ApplicationName;} set{_ApplicationName=value;}}
public string ApplicationUrl{get{return _ApplicationUrl;}
set{_ApplicationUrl=value;}}
public Byte[] ApplicationImage{get{return _ApplicationImage;} set{_ApplicationImage=value;}}
public string ImageName{get{return _ImageName;} 
set{_ImageName=value;}}
#endregion 

}

0 个答案:

没有答案