Лично я не вижу ничто плохого с использованием частичных классов как это, но это - просто мое собственное мнение. Единственная вещь, которая могла бы походить "на плохую практику", состоит в том, чтобы назвать Ваши классы "Helper1" и "Helper2" (но это могло бы быть примером только для разъяснения).
при использовании частичных классов как это проверьте (свободное) дополнение vsCommands (для Visual Studio 2008), который делает действительно легким сгруппировать файлы в проводнике решения (точно так же, как файлы разработчика), не редактируя файл проекта.
Это невозможно в 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, вы сможете сделать то же самое.