2

ODataModelBuilder で OData として公開する 2 つのエンティティ (注文と製品) があります。Order エンティティには、Status 複合型があります。Status複合型を公開する方法はありますか?

ODataModelBuilder _modelBuilder = new ODataModelBuilder();

var _status = _modelBuilder.ComplexType<Status>();
_status.Property(x => x.Description);
_status.Property(x => x.Name);
_status.Property(x => x.StatusId);

var _order = _orders.EntityType;
_order.HasKey(x => x.OrderId);
_order.Property(x => x.ProductId);
_order.Property(x => x.Quantity);
_order.ComplexProperty(x => x.Status);

var _product = _products.EntityType;
_product.HasKey(x => x.ProductId);
_product.Property(x => x.Name);
_product.Property(x => x.Description);

私が考えることができる別の方法は、Status を EntityType に変換することです。ただし、このアプローチでは、Order エンティティ型で Status ComplexProperty を定義できないため、Order 型から Status プロパティを削除します。Order エンティティ タイプには Status が必要です。

Web API の OData でこの問題に遭遇した人はいますか?

4

1 に答える 1

3

あなたがやりたいことを正確に行う方法はないようです。ただし、この問題は確実に回避できます。

public class Status
{
   // whatever you have here...
}

// essentially create a duplicate class
public class DerivedStatus : Status { }

// using modelBuilder...
modelBuilder.ComplexType<Status>();
modelBuilder.EntitySet<DerivedStatus>("Statuses");

理想的ではありませんが、うまくいくようです。私が見る限り、 ComplexPropertyへの呼び出しも削除する必要があります。それがうまくいくかどうか教えてください。

于 2013-03-18T16:16:34.140 に答える