У меня есть служебная сборка OData с WebAPI и EF 6. Я использую свободно 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
, где существует Customer.Address
.
Я предполагаю, что это внутреннее соединение, и, следовательно, не получает объектов Customer
, у которых нет Address
. Есть ли способ включить клиентов, где адрес также нулевой?
Выходной ток:
[
{
Id: 1,
Name: 'Customer1',
AddressId: 1,
Address :
{
Id: 1,
Street: 'Some street'
}
}
]
Wanted выход:
[
{
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