websharp数据访问框架是个很好的框架,本人在实际应用过种中作了一些改进,主要改了如果内容:对QueryParameterCollection类进行重写,其代码如下:
public class QueryParameterCollection:MarshalByRefObject,IEnumerable,IEnumerator
{
private int position;
private List<QueryParameter> item;
public QueryParameterCollection()
{
item = new List<QueryParameter>();
position = -1;
}
public QueryParameterCollection(int capacity)
{
item = new List<QueryParameter>(capacity);
position = -1;
}
public QueryParameter Add(QueryParameter parameter)
{
item.Add(parameter);
return parameter;
}
public QueryParameter Add(string parameterName, object Value)
{
QueryParameter parameter = new QueryParameter(parameterName,Value);
item.Add(parameter);
return parameter;
}
public QueryParameter Add(string parameterName, DbType dbType)
{
QueryParameter parameter = new QueryParameter(parameterName, dbType);
item.Add(parameter);
return parameter;
}
public QueryParameter Add(string parameterName, DbType dbType,int size, string sourceColumn)
{
QueryParameter parameter = new QueryParameter(parameterName, dbType,size, sourceColumn);
item.Add(parameter);
return parameter;
}
public QueryParameter Add(string parameterName, DbType dbType, int size, ParameterDirection direction, bool isNullable, byte precision, byte scale, string sourceColumn, DataRowVersion sourceVersion, object Value)
{
QueryParameter parameter = new QueryParameter(parameterName, dbType,size, direction, isNullable,precision,scale,sourceColumn, sourceVersion, Value);
item.Add(parameter);
return parameter;
}
public int Count
{
get
{
return item.Count;
}
}
public QueryParameter this[int index]
{
get
{
return (QueryParameter) item[index];
}
set
{
item[index] = value;
}
}
public QueryParameter this[string parameterName]
{
get
{
return (QueryParameter) item[this.IndexOf(parameterName)];
}
set
{
item[this.IndexOf(parameterName)] = value;
}
}
/// <summary>
/// 返回参数在集合中的位置
/// </summary>
/// <param name="parameterName"></param>
/// <returns></returns>
public int IndexOf(string parameterName)
{
int index = -1;
for (int i = 0; i < item.Count; i++)
{
if (item[i].ParameterName.Equals(parameterName))
{
index = i;
break;
}
}
return index;
}
/// <summary>
/// 清除所有参数
/// </summary>
public void Clear()
{
item.Clear();
}
#region IEnumerable 成员
IEnumerator IEnumerable.GetEnumerator()
{
return this;
}
#endregion
#region IEnumerator 成员
public object Current
{
get { return this.item[position]; }
}
public bool MoveNext()
{
if (position < this.item.Count-1)
{
position++;
return true;
}
else
{
return false;
}
}
public void Reset()
{
position = -1;
}
#endregion
}
}
与原来QueryParameterCollection类不同,增加了以枚举方式(可以用foreach方式访问元素)访问。