LINQ包含方法运行时错误

时间:2017-10-25 17:56:58

标签: c# asp.net entity-framework linq include

我正在和我一起工作 Visual Studio 2017 Express, ASP.NET Core 1.1
EntityFramework 1.0.0, Microsoft .Net Framework 4.7.02046, SQL Server 2012 LocalDB

我在app& amp; DB开发。我是这个技术的新手。我读了很多文档&课程提供良好的体验。现在我开发我的第一个真正的应用 我为我的英语道歉。

问题 有4个表: [关系] [1]

1)这项工作正常:让我显示一份Paciente列表,其中包含每个的Reserva列表。

public async Task<IActionResult> Details(int? id)
    {
        if (id == null)
        {
            return NotFound();
        }

        var paciente = await _context.Pacientes
            .Include(p => p.Reservas)
            .AsNoTracking()
            .SingleOrDefaultAsync(m => m.PacienteID == id);
        if (paciente == null)
        {
            return NotFound();
        }

        return View(paciente);
    }

2)这会产生运行时错误: SqlException:无效的对象名称'ProfesionalPorReserva'。

public async Task<IActionResult> Details(int? id)
    {
        if (id == null)
        {
            return NotFound();
        }

        var profesional = await _context.Profesionales
          .Include(p => p.ProfesionalPorReservas)  //this line is the problem
            .AsNoTracking()
            .SingleOrDefaultAsync(m => m.ID == id);
        if (profesional == null)
        {
            return NotFound();
        }

        return View(profesional);
    }

3)同样的问题2)  SqlException:无效的对象名称'ProfesionalPorReserva'。

public async Task<IActionResult> Details(int? id)
    {
        if (id == null)
        {
            return NotFound();
        }

        var reserva = await _context.Reservas
           // .Include(r => r.ProfesionalPorReservas)
            .AsNoTracking()
            .SingleOrDefaultAsync(m => m.ReservaID == id);
        if (reserva == null)
        {
            return NotFound();
        }

        return View(reserva);
    }

我解决了添加的问题,因为消化了智能感知:

var reserva = await _context.Reservas
   .Include(r => r.ProfesionalPorReservas)
           .ThenInclude( navigationPropertyPath: p => p.Profesional)
   .Include(r => r.ProfesionalPorReservas)
            .ThenInclude(navigationPropertyPath: r => r.Rol)
            .AsNoTracking()
            .SingleOrDefaultAsync(m => m.ReservaID == id);

添加 navigationPropertyPath:是解决方案。

0 个答案:

没有答案