私は、DataServicesを新しいLightSwitch2.0ODataデータソースと連携させるのに苦労してきました。OData 3.0がまだサポートされていないことに気づき、2.0バージョンにフォールバックする必要がありました。
私のデータコンテキストは、ODataアクセスを有効にするためのいくつかのxmlシリアル化オブジェクトのラッパーにすぎません。この「魔法」はReflectionProviderを使用して発生し、すべてのCRUD操作に関して正常に機能します。
LightSwitchでこのサービスを使用しようとすると問題が発生し、すべてのエンティティの関連付けが間違っていることに気付きます。
私の状況は、Microsoftのサンプルコードを見るのとまったく同じです。
したがって、このデータモデルを使用すると:
[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; }
}
Order[1-*]アイテム間の「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は「多対多」の関係をサポートしていないため、このサービスを利用しようとすると常に警告が表示され、関係はインポートされません。手動で定義することもできません。
リフレクションプロバイダーを使用してリレーションシップタイプを適用する方法を知っている人はいますか?
ありがとう!!