2010年2月24日星期三

IssueVision学习 2/n

软件的三层架构分为数据访问层、业务逻辑层、表现层。在issuevision中,数据访问和业务逻辑层都部署在issuevision的web服务中。基础的数据访问都放在数据集IVDataSet中。使用vs2005可以更方便的创建数据集问题。  

Issvision中IVDataSet只包含数据表定义。具体的内部表和数据表的映射,以及数据操作都放到IVData.cs文件中。如果使用Vs2005重新改写的话,可以在IVDataSet数据集中直接添加TableAdapter,将数据映射和数据库操作都放到数据集中。在TableAdapter中可以方便的添加查询、创建、更新、删除的数据库操作。  

IVData.cs 中主要提供GetLookupTables()、SendReceiveIssues()、GetNewIssueList()函数供web服务调用,来获取基础的用户、事务(issue)类型数据,发送和接受更改的事务(issue)。对于SqlDataAdapter来说,如果指定了它的InsertCommand、SelectCommand、DeleteCommand、UpdateCommand。那么它就可根据DataSet中的行记录状态,通过SqlDataAdapter.Update(Dataset)方法自动的插入修改或者删除数据库中的数据。如果在更新Dataset时,其他的用户已经修改数据库中的内容,则会产生冲突。Issuevision中将冲突的行数据保存在IVDataset数据集的Conflicts表中。在vs2005中添加的IVDataSet数据集的内容如下图:



IVData.cs类结构如下

其中_daIssueHistory,_daIssues,_daIssueTypes,_daStaffer都是IVDataSet数据集中TableAdatper类型的对象 IVDataSetTableAdapters.daStaffers _daStaffer如果更新时产生冲突,则放入m_conflicts表中

if (changedIssues != null)           

    {

                    try{      

                       _daIssues.Update(changedIssues);   

                    }            

                  catch (DBConcurrencyException ex)  {                  

                     m_conflicts.Rows.Add(ex.Row[0]);        

                  }              

 }
发表评论