非常方便的数据储存实体类,可以适应任何单表信息储存
又于每次开发都要写实体,如果想灵活一点,就必须要使用到反射进行给实体赋值,这样性能就大打折扣了,于是我就设计了一下实体信息储存类,性能还为测试,等我的数据数据访问层设计完成,在来PK性能,看看能提升性能多少。
using System; using System.Collections.Generic; using System.Collections; using System.Text; /* * *用途:储存数据库表信息,代替系统原来的实体类 *作者:双柳居士 *时间:2012-08-28 *QQ:275522539 *Email:88788802@qq.com * * */ namespace Apple.Database { /// <summary> /// 二维表数据 /// </summary> /// <typeparam name="TKey"></typeparam> /// <typeparam name="TValue"></typeparam> public class TableData<TKey, TValue> : Dictionary<TKey, TValue> { } /// <summary> /// 二维表对象实体 /// </summary> public class TableDataEntity { /// <summary> /// 数据储存容器 /// </summary> private TableData<int, IDictionary<string, string>> _dataContainer = new TableData<int, IDictionary<string, string>>(); private int _rowIndex = 0; /// <summary> /// 添加一行数据 /// </summary> /// <param name="rowData"></param> public void Add(IDictionary<string, string> rowData) { _dataContainer.Add(_rowIndex, rowData); _rowIndex++; } /// <summary> /// 添加一列数据,如果行不存在,则创建一个新的行 /// </summary> /// <param name="RowIndex"></param> /// <param name="FieldName"></param> /// <param name="Value"></param> public void AddRowFieldData(int RowIndex,string FieldName,string Value) { if (!_dataContainer.ContainsKey(RowIndex)) { _dataContainer.Add(_rowIndex,new Dictionary<string,string>()); _rowIndex++; } _dataContainer[RowIndex].Add(FieldName, Value); } /// <summary> /// 添加一行数据 /// </summary> /// <param name="RowIndex"></param> /// <param name="rowData"></param> public void AddRow(IDictionary<string, string> rowData) { _dataContainer.Add(_rowIndex, rowData); _rowIndex++; } /// <summary> /// 获取一列数据 /// </summary> /// <param name="RowIndex"></param> /// <param name="FieldName"></param> /// <returns></returns> public string GetRowFieldData(int RowIndex, string FieldName) { IDictionary<string, string> rtnValue = null; if (_dataContainer.TryGetValue(RowIndex, out rtnValue)) { return rtnValue[FieldName]; } return null; } /// <summary> /// 获取一行数据 /// </summary> /// <param name="RowIndex"></param> /// <returns></returns> public IDictionary<string, string> GetRowData(int RowIndex) { IDictionary<string, string> rtnValue = null; if (_dataContainer.TryGetValue(RowIndex, out rtnValue)) { return rtnValue; } return null; } /// <summary> /// 删除一行数据(不重新维护行号) /// </summary> /// <param name="rowIndex"></param> public void Remove(int rowIndex) { _dataContainer.Remove(rowIndex); } } }