У меня есть проблема, о которой я говорил, и каждый раз, когда я думаю, что у меня есть решение, я, кажется, возвращаюсь к основному требованию, которое не выполняется (я опишу это позже).
На упрощенном уровне я пытаюсь вернуть коллекцию объектов из данных, предоставленных хранимой процедурой. Иерархия объектов выглядит следующим образом
Объект отгрузки - имеет строковое свойство ShipmentNumber и коллекцию List
Объект OrderHeader - имеет двойное значение OrderNumber, строку OrderType, свойства строки ShipmentNumber и коллекцию List
Объект OrderLine - здесь имелись двойные OrderNumber, строка OrderType, двойная OrderLine, свойства строки ItemNumber
Отгрузка <-> OrderHeader - это 1 ко многим на основе ShipmentNumber для любого объекта
OrderNumber <-> OrderLine - это 1 ко многим на основе OrderNumber и OrderType для любого объекта
Эта структура объекта визуализирует, как мне нужно просматривать мои данные для определенного отчета (на самом деле это намного сложнее, чем этот, но это простой пример, который я изначально пытаюсь получить), и не похож на мою таблицу базы данных. состав. Я пытаюсь отобразить данные из хранимой процедуры в эту структуру, чтобы в итоге я получил коллекцию отправлений, в которой есть набор заголовков заказов, а в них - набор строк, но мне кажется, чтобы иметь возможность сделать это. Я не могу сделать это с помощью LINQ, поэтому я смотрю на Entity Framework. Кажется, что вы можете установить SP для возврата нескольких выходных данных SELECT, а затем использовать метод ObjectContext.Translate <...> (...) для отображения данных в объекты, как этот, и затем метод Translate позаботится о применении ассоциации, но когда я пытаюсь это сделать, я получаю сообщение об ошибке, что свойства объекта сущности не отображаются. Рассматривая это отображение, мы, похоже, возвращаемся к объектам, которые должны ссылаться на реальные таблицы базы данных (это моя постоянная проблема).
Как, если это возможно, я могу загрузить эти данные из хранимой процедуры (процедур) в эту структуру объектов, используя LINQ, EF или что-то еще, не основывая свои классы на таблицах базы данных? Конечно, это возможно? Я могу сделать это с одной коллекцией объектов, но проблема возникает, когда эти объекты содержат коллекции других объектов.
Всего несколько предысторий: - Мне нужно использовать хранимые процедуры для получения данных - это вне моего контроля и не изменится. Соответствующие таблицы распределены по нескольким серверам баз данных, некоторые из которых физически не имеют доступа к веб-серверу, но сервер баз данных, к которому он имеет доступ, имеет межсерверный доступ для запросов ко всем серверам (следовательно, еще одна причина использовать SP так как AFAIK, LINQ и т. д. не могут выполнять межсерверные объединения), поэтому, если я получу определения таблиц из своей среды разработки (где, очевидно, у меня есть доступ ко всем таблицам), они не будут доступны в производственной среде. окружающая среда.
Я мог бы либо создать плоский набор данных всех данных, затем прочитать его, вручную обнаружив изменения группировки (номер отгрузки, порядковый номер), а затем написать свой код соответствующим образом, но тогда это не использует ООП и кажется большой шаг назад, плюс он не предоставляет повторно используемый объект для других будущих потребностей. Вместо этого я мог бы написать код для прохождения наборов данных и загрузки данных вручную в эти объекты, но я понимаю, зачем изобретать велосипед - конечно, это не необычное требование, и должен быть способ сделать это?
Спасибо - MH