using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Reflection;
using Microsoft.ApplicationBlocks.Data;
using System.Data.SqlClient;
![](/Images/OutliningIndicators/None.gif)
public partial class PowerORM : System.Web.UI.Page
![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
![](/Images/OutliningIndicators/ContractedBlock.gif)
{
protected void Page_Load(object sender, EventArgs e)
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
string strConnection = "Server=127.0.0.1;User ID=sa;Password=qqww;Persist Security Info=True;DataBase=Northwind;";
string strSQL = "SELECT [CustomerID], [CompanyName], [ContactName] FROM [Customers]";
IList myList;
using (SqlDataReader myReader = SqlHelper.ExecuteReader(strConnection, CommandType.Text, strSQL))
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
myList = myPowerORM.FillHelper.Fill((new myPowerORM.Customer()).GetType(), myReader);
}
![](/Images/OutliningIndicators/InBlock.gif)
Response.Write("<pre>");
![](/Images/OutliningIndicators/InBlock.gif)
foreach (object o in myList)
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
myPowerORM.Customer c = (myPowerORM.Customer)o;
![](/Images/OutliningIndicators/InBlock.gif)
Response.Write(c.CustomerID+"\t"+c.CompanyName+"\t"+c.ContactNameI+"\n<br>");
}
![](/Images/OutliningIndicators/InBlock.gif)
Response.Write("</pre>");
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
}
}
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
namespace myPowerORM
![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
![](/Images/OutliningIndicators/ContractedBlock.gif)
{
public class Customer
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
private string _customerID, _companyName, _contactName;
![](/Images/OutliningIndicators/InBlock.gif)
[Column("CustomerID")]
public string CustomerID
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
get
{ return _customerID; }
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
set
{ _customerID = value; }
}
![](/Images/OutliningIndicators/InBlock.gif)
[Column("CompanyName")]
public string CompanyName
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
get
{ return _companyName; }
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
set
{ _companyName = value; }
}
![](/Images/OutliningIndicators/InBlock.gif)
[Column("ContactName")]
public string ContactNameI
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
get
{ return _contactName; }
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
set
{ _contactName = value; }
}
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
public Customer()
{ }
}
![](/Images/OutliningIndicators/InBlock.gif)
[AttributeUsage(AttributeTargets.Property, Inherited = false, AllowMultiple = false)]
public class ColumnAttribute : Attribute
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
private string _columnName = null;
![](/Images/OutliningIndicators/InBlock.gif)
public string ColumnName
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
get
{ return _columnName; }
}
![](/Images/OutliningIndicators/InBlock.gif)
public ColumnAttribute(string columnName)
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
_columnName = columnName;
}
}
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
public class FillHelper
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
public static IList Fill(Type rowType, IDataReader reader)
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
ArrayList dataList = new ArrayList();
while (reader.Read())
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
object item = Activator.CreateInstance(rowType, false); //使用与指定参数匹配程度最高的构造函数创建指定类型的实例
foreach (MemberInfo mi in rowType.GetMembers())
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
foreach (ColumnAttribute attr in mi.GetCustomAttributes(typeof(ColumnAttribute), false))
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
int index = reader.GetOrdinal(attr.ColumnName); //在给定列名称的情况下获取列序号
if (index != -1)
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
if (mi.MemberType == MemberTypes.Field)
((FieldInfo)mi).SetValue(item, reader.GetValue(index));
else if (mi.MemberType == MemberTypes.Property)
((PropertyInfo)mi).SetValue(item, reader.GetValue(index), null);
}
}
}
dataList.Add(item);
}
return dataList;
}
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
public FillHelper()
{ }
}
}