2009-11-12 139 views
2

我正在閱讀並在RIA上做一些RnD作爲新的Silverlight項目的解決方案。檢索單個實體+ Ria服務

我已經閱讀了很多文檔,並決定使用.Net RIA Services做一個小型的系統模型。

我想知道如何從域服務中獲得單個實體?

例如: 我想一個人並填充表格:

public Person GetSinglePerson() 
     { 
      return new Person { ID = 4, FirstName = "Cyanide", LastName = "Happiness", Status=3 }; 

} 說我使用的DomainDataSource:

<riaControls:DomainDataSource x:Name="source2" QueryName="GetSinglePersonQuery" AutoLoad="True"> 
        <riaControls:DomainDataSource.DomainContext> 
         <web:DataContext/> 
        </riaControls:DomainDataSource.DomainContext> 
       </riaControls:DomainDataSource> 

這隻返回EntityCollectionView?例如,如何將表單綁定到Person類中的屬性?

像:

<TextBox Text="{Binding FirstName, ElementName=source2}"/> 

一切似乎又回來了爲IEnumerable或CollectionViews(如數據樣本中結合),這是不是一個單一的實體有用。

我想單人入口,爲什麼我要一個CollectionView,我無法直接訪問屬性。

我也使用:

LoadOperation<Person> oLoadOperation = oDataContext.Load(oDataContext.GetSinglePersonQuery()); 

我非常接近這個RIA想法放棄,只是一個正常的WCF服務去,因爲它是更可預測和可管理性在這個階段。

回答

-1

我認爲你有你的課用[EnableClientAccess]裝飾?

嘗試

<TextBlock Text="{Binding Path=Person.FirstName}" 
3
ctxt.Load(ctxt.GetEmployeeByNumberQuery("ABC123")).Completed += new System.EventHandler(EmployeeLoad_Completed); 


void EmployeeLoad_Completed(object sender, System.EventArgs e) 
{ 
    Employee myEmployee = (sender as LoadOperation<Employee>).Entities.FirstOrDefault(); 
} 
1
 HumanResourceContext context = new HumanResourceContext(); 

     var addressquery = context.GetAddressesQuery(); 
     addressquery = addressquery.Where(a => a.AddressId == 1); 

     context.Load(addressquery, (op) => 
      { 
       Address address = op.Entities.FirstOrDefault(); 

       MessageBox.Show(address.Street1); 
      }, null);