1

在一個Silverlight5/RIA Services應用程序我建立了一個域名服務一個非常簡單的數據庫:C#如何處理RIA域服務中n:m關聯中的導航屬性?

訂房N:1個設備1:N GroupToEquipment N:1組

在我的自動生成的EDMX的GroupToEquipment實體從不出現,直接顯示從設備到組的直接關聯。到現在爲止還挺好。

已經從裝備到1參考:我的DomainService內的N個相關訂單,我不得不插入[包含]和[公會...]的「DomainService.metadata.cs」內

[Include] 
[Association("FK_Booking_Equipment", "EquipmentId","EquipmentId")] 
public EntityCollection<Booking> Booking { get; set; } 

和「DomainService.cs」中增加了一個.INCLUDE(「預訂」)

public IQueryable<Equipment> GetEquipment() 
{ 
    return this.ObjectContext.Equipment.Include("Booking"); 
} 

這完美的作品和查詢設備時,所有預訂的引用裝!但我該如何採用這個n:m組聯繫?

下面的代碼是我然後另外的「DomainService.metadata.cs」中嘗試:

internal sealed class EquipmentMetadata 
    { 

     // Metadata classes are not meant to be instantiated. 
     private EquipmentMetadata() 
     { 
     } 

     [Include] 
     [Association("FK_Booking_Equipment", "EquipmentId","EquipmentId")] 
     public EntityCollection<Booking> Booking { get; set; } 

     public Guid EquipmentId { get; set; } 

     [Include] 
     [Association("GroupToEquipment", "EquipmentId", "GroupId")] 
     public EntityCollection<Group> Group { get; set; } 

     public string Name { get; set; } 
    } 
} 

,這在的DomainService:

public IQueryable<Equipment> GetEquipment() 
    { 
     return this.ObjectContext.Equipment.Include("Booking").Include("Group"); 
    } 

代碼編譯罰款,但有在查詢設備....之後沒有提到羣組... :-(

我在做什麼錯了?很確定這只是一個小問題,對於一個知道...

最好的問候, Flo。

+0

您是否恢復了對預訂的引用?我會嘗試兩件事:1)運行Fiddler2並查看WCF Silverlight 2下返回的內容)刪除[Association] - 我從來不必包含它 –

+0

包括預訂參考。如果我刪除[Association]編譯失敗.... – Flo

回答

0

對不起,但WCF RIA不支持m:n關係!從更多信息

我建議你創建一個m見this尼基爾kotary答案:N類和手動處理的關係,換句話說,你必須從數據庫中暴露GroupToEquipment實體EDMX從EDMX到WCF RIA。

如果不能使用此選項的立場,並喜歡上添加其他代碼的依賴,看看m2mria on codeplex,我已經試過了對真正的基本情況和它的工作

希望這有助於
Marco

+0

感謝您的信息。 在此期間,我在解決方案的服務器端進行了所需的增強,並通過域服務發送過濾的結果集。 – Flo