我创建了一个从表中获取所有数据的通用方法,并给我一个在运行时编译到指定对象的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
}