2011-03-29 56 views
1

這是推動我瘋了,我有一個電話的DomainService的服務器上包含一個包括()返回子對象如下:的DomainService include()方法不返回兒童Silverlight客戶端

public IQueryable<RegionBorder> GetRegionBordersWithPolygonsAndLatLongs() 
    { 
     return this.ObjectContext.RegionBorders.Include("RegionPolygons.LatLongs"); 
    } 

我已將此行設置爲服務器上的調試點,並且它正在使用頂級實體中包含的子集合生成正確的結果。但是,在客戶端,我無法訪問這些孩子。客戶端代碼如下:

EntityQuery<RegionBorder> query = idc.GetRegionBordersWithPolygonsAndLatLongsQuery(); 
     LoadOperation<RegionBorder> lo = idc.Load<RegionBorder>(query); 
     lo.Completed += delegate(object sender, EventArgs e1) 
     { 
      //regionBorders = idc.RegionBorders; 
      string prtyName = "ProjOverspend"; 
      var elements = new Collection<FrameworkElement>(); 
      var propertySet = new ExtendedPropertySet(); 
      propertySet.RegisterProperty(prtyName, prtyName, typeof(double), 0d); 

      foreach (RegionBorder ent in idc.RegionBorders) 
      { 
       foreach (RegionPolygon rp in ent.RegionPolygons) 
       { 
        Telerik.Windows.Controls.Map.MapPolygon mp = new Telerik.Windows.Controls.Map.MapPolygon(); 
        mp.Points = rp.Points; 
        elements.Add(mp); 
        SetExtendedProperty(propertySet, prtyName, mp, 0d); 
       } 
      } 

任何人可以幫助我,我要去的地方錯了,因爲我相信這是以前工作正常,現在也做不了任何事情。

感謝您的任何幫助。

Martyn。

+0

這些空間類型?它們目前不受WCF RIA服務的支持。 http://forums.silverlight.net/forums/p/153739/343126.aspx – 2011-03-29 17:52:20

+0

最初他們是空間類型,但是,我已經改變了數據庫來存儲構成每個區域的多邊形表,然後是另一個表存儲每個多邊形的所有單個緯度/經度點。 – MartynJones87 2011-03-30 08:33:41

回答

1

您還必須在元數據中添加IncludeAttribute。

+0

謝謝,我的元數據類被搞砸了,當我添加一些新的實體後重新創建域服務時,元數據沒有正確地重新生成。 – MartynJones87 2011-03-30 09:04:41

0

有沒有什麼辦法讓VS2010中的域服務對話框生成元數據,自動添加[Include]和[Association(「[String name]」,「[String thisKey]」,「[String otherKey ]「)]標籤?

如果你出於某種原因需要重新生成域服務,如果你願意的話,維護和測試工作是相當費力的。在實體模型中實施了許多/重大變化。

當模型由於其關係(外鍵)而已經包含此信息時,添加[Association(「,」,「」)]標籤是否有必要?