Среда: Net Core 3.1 Web Api, Microsoft.AspNetCore.OData 7.4.0-beta
У меня есть контроллер OData api CustomersController, который работает нормально, но $ Развернуть всегда возвращает NullReferenceException. У клиента есть один ко многим контактам и адресам.
Это метод кода действия:
[HttpGet]
[ODataRoute]
[EnableQuery]
public IActionResult Get()
{
try
{
var customers = _context.Customers;
_logger.LogInfo($"Returned {customers.Count()} customers from database.");
return Ok(customers);
}
catch (Exception ex)
{
_logger.LogError($"Something went wrong inside Get customers action: {ex.Message}");
return StatusCode(500, "Internal server error");
}
}
И это определение объекта клиента:
public class Customer : BaseEntity
{
public Guid CustomerId { get; set; }
[Required(ErrorMessage = "Name is required")]
[StringLength(100, ErrorMessage = "Name can't be longer than 100 characters")]
public string Name { get; set; }
[StringLength(100, ErrorMessage = "Commercial name can't be longer than 100 characters")]
public string CommercialName { get; set; }
[Required(ErrorMessage = "Tax code is required")]
[StringLength(25, ErrorMessage = "Tax code can't be longer than 25 characters")]
public string TaxCode { get; set; }
[StringLength(250, ErrorMessage = "Email can't be longer than 250 characters")]
[EmailAddress]
public string Email { get; set; }
[StringLength(250, ErrorMessage = "Url can't be longer than 250 characters")]
public string Url { get; set; }
public ICollection<Contact> Contacts { get; set; }
public ICollection<Address> Addresses { get; set; }
public ICollection<Work> Works { get; set; }
}
Конфигурация DbContext:
// Table
builder.ToTable("Customers");
builder.HasKey(b => b.CustomerId);
// Relationships
builder.HasMany(b => b.Contacts)
.WithOne(b => b.Customer)
.HasForeignKey(b => b.CustomerId)
.OnDelete(DeleteBehavior.Cascade);
builder.HasMany(b => b.Addresses)
.WithOne(b => b.Customer)
.HasForeignKey(b => b.CustomerId)
.OnDelete(DeleteBehavior.Cascade);
У меня есть другой контроллер, но с отношениями один-к-одному, и этот контроллер отлично работает с $ expand с тем же кодом в действии.
Любое представление о том, что не работает ? Привет