Поскольку вы хотите, чтобы смешанный набор результатов возвращался как IQueryable<T>
, следует использовать запрос Join()
и поместить результаты запроса в модель представления:
1) Лямбда-версия
public IEnumerable<ServiceRequestsVM> ServiceRequestGetAll()
{
var result = DB.ServiceRequests.Join(DB.Services,
x => x.Service_Id, // Source table foreign key
y => y.Id, // Joined table primary key
(x, y) => new ServiceRequestsVM { Id = x.Id, Service_Id = x.Service_Id, Name = y.Name, Description = x.Description, Requestor = x.Requestor, Status = x.Status })
.OrderBy(z => z.Service_Id).ToList();
return result;
}
2) Версия выражения запроса
public IEnumerable<ServiceRequestsVM> ServiceRequestGetAll()
{
var result = (from srv in DB.Services
join srq in DB.ServiceRequests
on srv.Id equals srq.Service_Id
select new ServiceRequestsVM
{
Id = srq.Id,
Service_Id = srq.Service_Id,
Name = srv.Name,
Description = srq.Description,
Requestor = srq.Requestor,
Status = srq.Status
}).OrderBy(z => z.Service_Id).ToList();
return result;
}
Пример Viewmodel
public class ServiceRequestsVM
{
public int Id { get; set; }
public int Service_Id { get; set; }
public string Name { get; set; }
public string Description { get; set; }
public string Requestor { get; set; }
public string Status { get; set; }
}
Затем измените директиву @model
, чтобы использовать viewmodel с объединенными свойствами из обеих таблиц:
@model IEnumerable<OnlinePlatform.Models.ServiceRequestsVM>
И контроллер должен выглядеть следующим образом:
public ActionResult Service_Request()
{
var dao = new ServicesDAO();
return PartialView("Service_Request", dao.ServiceRequestGetAll());
}
После выполнения этих шагов привязка модели должна работать в целом.