Die ASP.Net-Web-API wird in VS korrekt angezeigt, gibt jedoch HTTP500 an

Nachdem ich gestern sehr geholfen habe, bin ich auf einen bekannten Fehler in der Betaversion von asp.net4 gestoßen. Ich habe ein Upgrade auf VS2012 RC Express (4.5) durchgeführt, und jetzt erhalte ich einen internen Serverfehler und kann nicht erkennen, warum. Ich erstelle eine Web-API:

Modell

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.ComponentModel.DataAnnotations;
using System.Data.Entity.ModelConfiguration.Conventions;
using System.Data.Entity;
using System.ComponentModel.DataAnnotations.Schema;

namespace MvcApplication6.Models
{
    public class tblCustomerBooking
    {
        [Key()]
        public int customer_id { get; set; }
        public string customer_name { get; set; }
        public string customer_email { get; set; }
        public virtual ICollection<tblRental> tblRentals { get; set; }
    }

    public class tblRental
    {
        [Key()]
        public int rental_id { get; set; }
        public int room_id { get; set; }
        public DateTime check_in { get; set; }
        public DateTime check_out { get; set; }
        public decimal room_cost { get; set; }
        public int customer_id { get; set; }
        [ForeignKey("customer_id")]
        public virtual tblCustomerBooking tblCustomerBooking { get; set; }
    }
}

Anschließend habe ich den Assistenten zum Hinzufügen von Controllern verwendet, "Vorlage: API-Controller mit Lese- / Schreibzugriff unter Verwendung von Entity Framework" ausgewählt, tblCustomerBooking als meine Modellklasse ausgewählt und auf Folgendes geklickt:

using System.Data.Entity;

namespace MvcApplication6.Models
{
    public class BookingsContext : DbContext
    {
        public BookingsContext() : base("name=BookingsContext")
        {
        }
        public DbSet<tblCustomerBooking> tblCustomerBookings { get; set; }
    }
}

Mein Controller (BookingsController.cs), der von Visual Studio 2012 Express automatisch generiert wird, ist:

using System;
using System.Collections.Generic;
using System.Data;
using System.Data.Entity.Infrastructure;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Web;
using System.Web.Http;
using MvcApplication6.Models;

namespace MvcApplication6.Controllers
{
    public class BookingsController : ApiController
    {
        private BookingsContext db = new BookingsContext();

        // GET api/Bookings
        public IEnumerable<tblCustomerBooking> GettblCustomerBookings()
        {
            return db.tblCustomerBookings.AsEnumerable();
        }
    }
}

Ich habe oben bei "return db ....." einen Haltepunkt hinzugefügt und das Watch-Teil in VS überprüft - es zeigt deutlich das Objekt mit dem Kunden und die damit verbundenen Mieten:

Wenn ich jedoch zulasse, dass das Skript fortgesetzt wird, wird nur ein http500-Fehler angezeigt (siehe Fiddler unten):

Kann ich dem Controller weiteren Code hinzufügen, um festzustellen, warum der Fehler aufgetreten ist? Oder kann jemand sehen, was falsch sein kann? VS scheint es abzurufen, wie im ersten Screenshot gezeigt, aber es scheint nicht in der Lage zu sein, es auszusenden.

Vielen Dank für jede Hilfe oder Hinweise,

Kennzeichen

Aktualisieren

Hallo - frage ich einfach zu viel von der API? Ist es nicht möglich (out of the box), Objekte mit einer bis mehreren Beziehungen einfach zurückzugeben? Kann es wirklich nur eine einzelne Objektliste erzeugen?

Danke, Mark

Antworten auf die Frage(7)

Ihre Antwort auf die Frage