项目:代理商注册系统... 采用三层架构...用vs2005+ms2005开发。 数据比较简单..建二个表,agentinformation和unauditedagentinformation,分别存放已经审核通过的用户和未审核的用户数据。 本项目中值得总结的地方有: 1. 序列化存储数据。 对于未审核的用户数据,先将数据序列化然后存入。所以unauditedagentinformation仅三个字段,一个存放序列化数据,一个存放用户名,还有一个标识用来判断用户的请求是否被驳回。 两个转化过程: 实例序列化:
System.Runtime.Serialization.Formatters.Binary.BinaryFormatter formatter = new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter(); System.IO.MemoryStream stream = new System.IO.MemoryStream(); formatter.Serialize( stream, agentData );
反序列化为实例: AgentData agentData;System.Runtime.Serialization.Formatters.Binary.BinaryFormatter formatter = new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter(); byte [] data = ( byte []) DbUtility.ExecuteScalar( " Select unauditedAgentData From UnauditedAgentInfomation Where userName={0} " , userName ); if ( data == null ) { return null; } agentData = (AgentData) formatter.Deserialize( new System.IO.MemoryStream( data ) ); // 返回一个实例 return agentData;
2.数据实例化 建立一个实例..这样取数据还是写入数据都比较方便。 public static EmployeeData GetEmployeeData( int EmployeeId ) { DataRow data = DbUtility.ExecuteSingleRow( "SELECT * FROM EmployeeInformation WHERE ID={0}", EmployeeId ); if ( data == null ) return null; else return ParseData( data ); } /// <summary> /// 解析代理商数据 /// </summary> /// <param name="requestData">包含数据的NameValueCollection</param> /// <returns></returns> public static EmployeeData ParseData( NameValueCollection requestData ) { if ( requestData == null ) return null; EmployeeData instance = new EmployeeData(); ObjectDataParser.ParseData<NameValueCollection>( requestData, instance, ObjectDataParser.GetFieldData_Request ); return instance; } /// <summary> /// 解析代理商数据 /// </summary> /// <param name="data">包含数据的DataRow</param> /// <returns></returns> public static EmployeeData ParseData( DataRow data ) { if ( data == null ) return null; EmployeeData instance = new EmployeeData(); ObjectDataParser.ParseData<DataRow>( data, instance, ObjectDataParser.GetFieldData_DataRow ); return instance; }
利用两种方式来解析数据。 以上这两个总结点都是我第一次接触。因此小结一下。 当然,除了上面这两点,对逻辑层和数据层的分工也有了更明确的认识。对界面的优化也获益甚多。