NET RIA SERVICE 关联实体同时更新到数据库

最近在用SL开发一个MIS项目,因接触时间不长,遇到了很多问题,现把学习心得写下来.

1、前台代码

代码
       <my2:DomainDataSource x:Name="myDataSource" LoadingData="myDataSource_LoadingData" LoadedData="myDataSource_LoadedData"
                              SubmittedChanges
="myDataSource_SubmittedChanges" AutoLoad="False" LoadSize="40">
            
<my2:DomainDataSource.DomainContext>
                
<ria:FamilyDomainContext></ria:FamilyDomainContext>
            
</my2:DomainDataSource.DomainContext>
            
<my2:DomainDataSource.SortDescriptors>
                
<my2:SortDescriptor PropertyPath="CreateTime" Direction="Descending" ></my2:SortDescriptor>
            
</my2:DomainDataSource.SortDescriptors>
        
</my2:DomainDataSource>

 2、下边一段实现myDataSource 查询方法动态指定,参数动态添加

代码
   private FamilyDomainContext familyDomainContext = new FamilyDomainContext();                  
   this.familyDomainContext = this.myDataSource.DomainContext as FamilyDomainContext;

 
//查询参数清空,一定要放在QueryName前边,不然会出错
  this.myDataSource.QueryParameters.Clear();

 
this.myDataSource.QueryName = "GetJKDA_FamilyRecordByLastNameLetterQuery";
  var p 
= new Parameter();
  p.ParameterName 
= "houseHoldeName";
  p.Value 
= key;
                  
 
this.myDataSource.QueryParameters.Add(p);
 
this.myDataSource.Load();

 

3、重写服务端DomainService 中的Submit ,Person和Book模型的Insert,Update,Delete放在同一个DomainService中

代码
 public override bool Submit(ChangeSet changeSet)
        {
            
bool result = false;
            
using (
                var tx 
= new TransactionScope(TransactionScopeOption.Required,
                    
new TransactionOptions{IsolationLevel = System.Transactions.IsolationLevel.ReadCommitted})
             )
            {
                result 
= base.Submit(changeSet);
                
if (!this.ChangeSet.HasError)
                {
                    tx.Complete();
                }
            }
            
return result;
        }

 4、数据保存            

代码
                    Person a = new Person();
                    a.Name="Test";
 
                    Book b = new Book();
                    b.Name="Book";
 
                    this.FamilyContext.Persons.Add(a);
                    this.FamilyContext.Books.Add(b);
 
                    this.MyDomainDataSource.SubmitChanges();

 数据是同时保存到数据库了,但不知道是不是在事务中完成的,国内这方便的资料很少,也没有实例,-_-

posted @ 2010-07-30 17:08  zjl  阅读(1346)  评论(1)    收藏  举报