WebAPIとEFでODataサービスをビルドしています。私は流暢なAPIを使用してモデルを作成します。それは正常に動作しますが、$expand
を使用すると、展開されたプロパティがnull
のエンティティが省略されます。
public class Customer
{
public int Id { get; set; }
public string Name { get; set; }
public int? AddressId { get set; } // Note that Address is optional
public Address Address { get; set; }
}
public class Address
{
public int Id { get; set; }
public string Street{ get; set; }
}
public class CustomersController : ODataController
{
[EnableQuery]
public virtual IQueryable<Customer> Get(ODataQueryOptions<Customer> q)
{
// I return IQueryable from DBSet here...
return db.GetDbSet<Customer>();
}
}
Customer
がアドレスを持っている必要はありません。
これは簡単な例です。 /customers?$expand=Address
のようにクエリを実行した場合、Customers
の場合、Address == null
は含まれません。 Customer.Address
が存在するCustomer
エンティティのみが返されます。
私は内部結合を行い、Address
を持たないCustomer
エンティティを取得しないと思います。 アドレスがヌルの場合でも顧客を含める方法はありますか?
電流出力:
[
{
Id: 1,
Name: 'Customer1',
AddressId: 1,
Address :
{
Id: 1,
Street: 'Some street'
}
}
]
募集出力は:
[
{
Id: 1,
Name: 'Customer1',
AddressId: 1,
Address :
{
Id: 1,
Street: 'Some street'
}
},
{
Id: 2,
Name: 'Customer2',
AddressId: null,
Address : null
}
]
モデル上の例です。私は実際にはもっと大きなモデルを手に入れましたが、私はmcveを提供するために可能な限り短い例を保つように努めました。私はthisとthisの質問を読んだことがありますが、何のエラーもありません。私は実体を全く得ていない。
あなたのEFクエリは何ですか? – Sampath
私は 'DbSet'を問い合わせ可能なものとして返すので、私は全く問い合わせをしません。この例にコードを追加しました。 – smoksnes