Импорт функции платформы объекта, не может загрузить отношения для функций тот объект возврата типы

Лично я не вижу ничто плохого с использованием частичных классов как это, но это - просто мое собственное мнение. Единственная вещь, которая могла бы походить "на плохую практику", состоит в том, чтобы назвать Ваши классы "Helper1" и "Helper2" (но это могло бы быть примером только для разъяснения).

при использовании частичных классов как это проверьте (свободное) дополнение vsCommands (для Visual Studio 2008), который делает действительно легким сгруппировать файлы в проводнике решения (точно так же, как файлы разработчика), не редактируя файл проекта.

6
задан 16 December 2008 в 16:59
поделиться

1 ответ

Это невозможно в EF 1.0

Причина в том, что EF будет рассматривать значения хранимых процедур как просто значения, а не свойства навигации.

Например, сущность «Сотрудник» имеет несколько сущностей «Заказ». В заказе у вас есть свойство под названием EmployeeID. Когда база данных заполняет ваш запрос с помощью операторов include, она создает 1 запрос проекции в SQL для заполнения всех данных заказа, которые может иметь конкретный Сотрудник.

Итак, если бы я сказал

var employee = context.Employees.Include ( "Заказы"). Где (e => e.ID == 1) .First ();

var orders = employee.Orders;

SQL для первого запроса создаст прогнозный запрос, который будет содержать заказы где EmployeeID = 1.

Теперь, когда ваша хранимая процедура выполняется, она может выполнять любой код за кулисами (другими словами, он может возвращать любой набор данных). Поэтому, когда SQL запускает хранимую процедуру, он просто запускает код в этой хранимой процедуре и не знает, что EmployeeID on Order является FK для этого свойства. Кроме того, если ваша хранимая процедура возвращает сущность Employee, то вы смотрите на другой сценарий, в котором у вас даже не будет OrderID, для которого нужно следовать.

Чтобы обойти это, вы можете настроить свой запрос в EF, используя операторы Include, которые могут отражать любую хранимую процедуру. Если вы используете правильное сочетание операторов .Select и .Include, вы сможете сделать то же самое.

тогда вы смотрите на другой сценарий, в котором у вас даже не будет OrderID, для которого нужно следовать.

Чтобы обойти это, вы можете настроить свой запрос в EF, используя операторы Include, которые могут отражать любую хранимую процедуру. Если вы используете правильное сочетание операторов .Select и .Include, вы сможете сделать то же самое.

то вы смотрите на другой сценарий, в котором у вас даже не будет OrderID для реализации.

Чтобы обойти это, вы можете настроить свой запрос в EF, используя операторы Include, которые могут отражать любую хранимую процедуру. Если вы используете правильное сочетание операторов .Select и .Include, вы сможете сделать то же самое.

5
ответ дан 17 December 2019 в 04:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: