Время ожидания по умолчанию для клиента HttpComponent

Поскольку эти две строки ...

EmployeeService es = new EmployeeService();
CityService cs = new CityService();

... не принимают параметр в конструкторе, я предполагаю, что вы создаете контекст внутри классов. Когда вы загружаете city1 ...

Payroll.Entities.City city1 = cs.SelectCity(...);

... вы присоединяете city1 к контексту в CityService. Позже вы добавите city1 в качестве ссылки на новый Employee e1 и добавьте e1 , включая эту ссылку, на city1 в контекст в EmployeeService. В результате у вас есть city1, прикрепленный к двум различным контекстам, о которых жалуется исключение.

Вы можете исправить это, создав контекст вне классов обслуживания и введя его и используя его в обеих службах:

EmployeeService es = new EmployeeService(context);
CityService cs = new CityService(context); // same context instance

Ваши классы обслуживания выглядят немного похожими на репозитории, которые отвечают только за один тип сущности. В этом случае у вас всегда будут проблемы, как только будут связаны отношения между сущностями при использовании отдельных контекстов для сервисов.

Вы также можете создать единую службу, которая отвечает за набор тесно связанных объектов , как EmployeeCityService (который имеет один контекст) и делегирует всю операцию в вашем методе Button1_Click методу этой службы.

13
задан thinkanotherone 16 March 2012 в 09:04
поделиться