Ich versuche, einige Daten aus drei Datenbanktabellen in eine Ansicht zu bekommen. Daher verwende ich eine Klasse, in der ich zwei andere Klassen mit einer Liste einschließe.invalidoperationexception on actionresult
Eine dieser zwei eingeschlossenen Klassen funktioniert gut, aber die andere verursacht eine InvalidOperationException in einem Controller ActionResult.
Das ist, was ich bisher produziert haben:
namespace ArrangeAppointments.Models
{
public class Appointment : IAppointment
{
#region Implementation of IAppointments
public int UserId { get; set; }
public string Title { get; set; }
public string Description { get; set; }
public string Duration { get; set; }
public virtual List<Invitee> Invitees { get; set; }
public virtual List<Occasion> Occasions { get; set; }
#endregion
public int AppointmentId { get; set; }
namespace ArrangeAppointments.Models
{
public class Invitee : IInvitee
{
public int Id { get; set; }
public int AppointmentId { get; set; }
public string Email { get; set; }
public string Presence { get; set; }
public virtual Appointment Appointment { get; set; }
namespace ArrangeAppointments.Models
{
public class Occasion : IOccasion
{
public int Id { get; set; }
public int AppointmentId { get; set; }
public DateTime ocDate { get; set; }
public DateTime ocTime { get; set; }
public string Location { get; set; }
public virtual Appointment Appointment { get; set; }
Action
[HttpGet]
public ActionResult NewApp(int Id)
{
if (Id == 0)
{
return View();
} else {
try
{
using (var db = new MainDbContext())
{
Appointment appointment = db.Appointments.Find(Id);
if (appointment == null)
{
return HttpNotFound();
}
else
{
return View("NewApp", appointment);
}
}
}
catch (Exception e)
{
Console.WriteLine(e.Message);
Console.WriteLine(e.InnerException);
return View();
}
}
}
Klassen
Das Objekt 'Termin' in der Action mit allen erforderlichen Daten gefüllt ist, mit Ausnahme die Liste für den Anlass. Dies verursacht die Ausnahme. Diese Ausnahme löst jedoch das Catch-Ereignis nicht aus.
Was verursacht diese Ausnahme?
DbContext Klasse
namespace ArrangeAppointments
{
public class MainDbContext : DbContext
{
public MainDbContext() : base("name=DefaultConnection")
{
}
public DbSet<User> Users { get; set; }
public DbSet<Appointment> Appointments { get; set; }
public DbSet<Invitee> Invitees { get; set; }
public DbSet<Occasion> Occasions { get; set; }
}
}
, wo es die Ausnahme wirft? Verwenden Sie Lazy Loading, zeigen Sie uns die dbcontext-Klasse – Thorarins
Ich habe die DbContext-Klasse noch hinzugefügt. – wintee
Die einzige Möglichkeit, die Ausnahme zu sehen, ist, wenn ich den Inhalt des "Termin" -Objekts beim Debuggen des ActionResultes überprüfe. – wintee