Я пытаюсь написать функцию поиска для таблицы базы данных, которая должна получить доступ к информации из связанных таблиц, используя Entity Framework.Однако у меня возникают проблемы с получением данных из моего исходного запроса после объединения родительской таблицы и связанных таблиц.Мой код в настоящее время выглядит следующим образом.Я инициализирую свой запрашиваемый объект
IQueryable<PurchaseOrder> po = _context.PurchaseOrders;
, где PurchaseOrder является типом сущности.Затем есть ряд блоков, подобных этому.
if (!String.IsNullOrEmpty(searchViewModel.Comment)){
var helper = _context.PurchaseOrderComments.Where(x => x.CommentText.Contains(searchViewModel.Comment));
var mid = po.Join(helper, r => r.PurchaseOrderID, u => u.PurchaseOrderID, (r, u) =>
new
{
PurchaseOrderID = r.PurchaseOrderID,
PurchaseOrderNumber = r.PurchaseOrderNumber,
VendorID = r.VendorID,
ContractNumber = r.ContractNumber,
BuyerUserID = r.BuyerUserID
});
po = mid.Select(x => new PurchaseOrder
{
PurchaseOrderID = x.PurchaseOrderID,
PurchaseOrderNumber = x.PurchaseOrderNumber,
VendorID = x.VendorID,
ContractNumber = x.ContractNumber,
BuyerUserID = x.BuyerUserID
});
}
После каждого блока po передается следующему параметру поиска.Однако, как вы можете догадаться, моя программа жалуется на то, что я не могу создать сложный тип в операторе Select середины.Я также попытался создать объекты PurchaseOrder из содержимого mid, вставить их в новый список PurchaseOrders и преобразовать этот список в запрашиваемый запрос, чтобы назначить ему po для передачи в следующий блок.Однако это меняет тип данных po с System.Data.Object.ObjectSet на System.Collections.Generic.List, который затем генерирует исключение InvalidOperationException в следующий раз, когда я пытаюсь выполнить итерацию по нему, используя foreach.
Так что мойвопрос в том, есть ли какие-либо очевидные ошибки в моем подходе или какие-либо предложения для других способов решения проблемы?Большое спасибо за любую помощь.