Я пишу ASP.Net Web Api OData для базы данных Northwind. Вот мой метод в контроллере.Вызов связанного объекта объекта из ASP.Net Web Api OData Controller
[EnableQuery]
public IQueryable<Order> GetOrdersFromCustomer([FromODataUri] string key)
{
// return _Context.Orders.Where(o => o.CustomerID == key);
return _Context.Customers.Where(c => c.CustomerID.Equals(key)).SelectMany(c => c.Orders);
}
Это мой код конфигурации в WebApiConfig.cs.
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
config.Routes.MapODataRoute("Northwind", "odata", GetImplicitEDM());
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
private static IEdmModel GetImplicitEDM()
{
ODataModelBuilder builder = new ODataConventionModelBuilder();
builder.EntitySet<Customer>("Customers");
builder.EntitySet<Order>("Orders");
return builder.GetEdmModel(); // magic happens here
}
Это мой Order.cs
public class Order
{
public int OrderID { get; set; }
public string CustomerID { get; set; }
public int? EmployeeID { get; set; }
public DateTime? OrderDate { get; set; }
public DateTime? RequiredDate { get; set; }
public DateTime? ShippedDate { get; set; }
public ICollection<OrderDetail> OrderDetails { get; set; }
}
Это мой Customer.cs.
public class Customer
{
public string CustomerID { get; set; }
public string CompanyName { get; set; }
public string ContactName { get; set; }
public string Phone { get; set; }
public string Address { get; set; }
public string City { get; set; }
public string PostalCode { get; set; }
public string Country { get; set; }
public ICollection<Order> Orders { get; set; }
}
Это мой запрос.
http://localhost:21288/odata/Customers ('ALFKI')/Заказы
Каждый раз, когда я называю этот запрос, я получаю это исключение (код состояния 500). Я пишу и проверяю все, как пример кода. Но их код отлично работает, и мой код не работает.
"odata.error":{
"code":"","message":{
"lang":"en-US","value":"An error has occurred."
},"innererror":{
"message":"The 'ObjectContent`1' type failed to serialize the response body for content type 'application/json; odata=minimalmetadata; streaming=true; charset=utf-8'.","type":"System.InvalidOperationException","stacktrace":"","internalexception":{
"message":"Null collections cannot be serialized.","type":"System.Runtime.Serialization.SerializationException"
Я не знаю, что не так. PLZ помочь мне.
Я получаю то же сообщение об ошибке. Вам удалось найти причину? – JonathanPeel