我一直在努力嘗試讓Data Services與新的LightSwitch 2.0 OData數據源一起工作。 注意到OData 3.0仍然不受支持我必須回退到2.0版本。WCF數據服務反射提供商指定關聯類型
碰巧我的數據上下文只不過是封裝了一些xml序列化對象來啓用OData訪問。 這個「神奇」使用Reflection Provider發生,並且它在所有CRUD操作中都正常工作。
當我嘗試在LightSwitch中使用此服務並意識到我的所有實體關聯都是錯誤時,問題就開始了。
我擁有的情況與您看微軟的sample code完全一樣。
因此,使用這種數據模型:訂單之間
[DataServiceKeyAttribute("OrderId")]
public class Order
{
public int OrderId { get; set; }
public string Customer { get; set; }
public IList<Item> Items { get; set; }
}
[DataServiceKeyAttribute("Product")]
public class Item
{
public string Product { get; set; }
public int Quantity { get; set; }
}
很明顯的 「一個一對多」 的關係[1 - *]項目。 但看這個服務的XML元數據,該協會被聲明爲「多到多」:
<Association Name="Order_Items">
<End Type="WEBfactory.StreamInsight.Adapters.Carel.DataServices.Order" Multiplicity="*" Role="Order"/>
<End Type="WEBfactory.StreamInsight.Adapters.Carel.DataServices.Item" Multiplicity="*" Role="Items"/>
</Association>
現在,這並沒有真正使用「服務引用」客戶端時麻煩多,但由於LightSwitch不支持「多對多」關係,因此嘗試使用此服務時總會收到警告,並且關係既不導入也不可能手動定義。
有沒有人有線索如何使用反射提供程序工作強制關係類型?
謝謝!
嗨馬克,你是對的,在Item類中沒有任何跡象表明它只包含一個Order,無論如何,在改變它之後,你仍然可以看到元數據中的多對多關係,並且這會導致LightSwitch警告不支持的關係。 我找到的解決方案使用此方法,並配合使用IgnorePropertiesAttribute刪除LightSwitch警告。 – 2012-07-12 12:45:53