4

ODataとEntityFrameworkを使い始めています。

Customerを公開するコントローラーを作成しました。モデル(edmx)にはエンティティ(顧客)が1つだけあり、すべてが正常に機能します(データがレンダリングされています)。

ここで、2番目のエンティティ(注文)を追加すると(データベースからモデルを更新し、注文を選択)、1対多(1顧客対多注文)が自動的に設定されます。

私は他に何もしません、そして私がコントローラーをコンパイル/実行するとき、私はこのエラーを受け取ります:

Line 23:         builder.EntitySet(Of Customer)("Customers")
Line 24:         Return builder.GetEdmModel()  --> Exception Here
Line 25: 
Line 26:     End Function

複合タイプ'WebTools.Order'は、プロパティ'Customer'を介してエンティティタイプ'WebTools.Customer'を参照します。

Order Entityを削除すると、機能します。

問題が方程式のOData/WebAPI部分の「構成」にあるのか、「EntityFramework」にあるのかわかりません。

4

1 に答える 1

16

モデルビルダーは、エンティティタイプOrderのキープロパティを理解できないと思います。いくつかの方法でモデルビルダーを支援できます。

  1. builder.EntitySet<Order>("orders");。これにより、新しいエンティティセット「orders」が追加され、タイプ「Order」をエンティティタイプとしてマークする効果もあります。'Order'のキープロパティも指定する必要があります。

  2. タイプ'Order'のキープロパティを属性でマークし[Key]ます。

  3. 属性が嫌いで、コードでそれを行うことを好む場合は、次のことができます。builder.EntitySet<Order>("orders").EntityType.HasKey(o => order.KeyProperty);

于 2013-03-15T18:24:58.793 に答える