I:项目描述:利用 Silverlight+WCF 技术,模拟资源管理器(如图1)功能,通过地址栏输入本地文件夹路径,然后将解析出来的该目录下所有文件(夹)存储到数据库中,然后再加载到界面上显示出来;
[SL] Silverlight + WCF Demo项目

(图1)

II:涉及技术:Silverlight + WCF + Component One 控件(TreeView 和 FlexGrid)
III:开发环境:Visual Studio2012 + SQL Server 2008 R2 + Silverlight 5 + Component One C1Silverlight_2014v1;

一  项目架构(如图2)

[SL] Silverlight + WCF Demo项目(图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 }

相关文章: