I:项目描述:利用 Silverlight+WCF 技术,模拟资源管理器(如图1)功能,通过地址栏输入本地文件夹路径,然后将解析出来的该目录下所有文件(夹)存储到数据库中,然后再加载到界面上显示出来;
(图1)
II:涉及技术:Silverlight + WCF + Component One 控件(TreeView 和 FlexGrid)
III:开发环境:Visual Studio2012 + SQL Server 2008 R2 + Silverlight 5 + Component One C1Silverlight_2014v1;
一 项目架构(如图2)
(图2)
FolderDB:DAL(数据访问层),包括文件属性类 Folders,文件夹树模型类 FolderModel,数据库操作类 DBHelper;
FolderUI:Silverlight 客户端,基本界面显示,包括 FlexGrid 标题数据源类 ColumnHeaders,文件大小值转换类 FileSizeConverter;
FolderWCF:WCF 服务层,包括 FolderService 服务类;
FolderWeb:Web层,该项目中涉及不多;
二 源码部分解析
1 /// <summary> 2 /// 执行多条SQL语句,实现数据库事务 3 /// </summary> 4 /// 多条SQL语句 5 public int ExecuteSqlTran(List sqlStrList) 6 { 7 SqlTransaction sqlTran = null; 8 try 9 { 10 if (ConnectionState.Open != m_SqlConn.State) 11 { 12 m_SqlConn.Open(); 13 } 14 int count = 0;// 影响的记录数 15 SqlCommand cmd = new SqlCommand(); 16 sqlTran = m_SqlConn.BeginTransaction(); 17 cmd.Connection = m_SqlConn; 18 cmd.Transaction = sqlTran; 19 foreach (string sqlStr in sqlStrList) 20 { 21 if (sqlStr.Trim().Length > 1) 22 { 23 cmd.CommandText = sqlStr; 24 count += cmd.ExecuteNonQuery(); 25 } 26 } 27 sqlTran.Commit();// 提交数据库事务 28 return count; 29 } 30 catch (SqlException sqlEx) 31 { 32 if (null != sqlTran) 33 { 34 sqlTran.Rollback();// 失败后回滚 35 } 36 37 throw new Exception(sqlEx.Message); 38 } 39 }