Здравствуйте, <Аноним>, Вы писали:
А>Тогда по отдельности, как сделать кошерно и как сделать правильно?
Моё ИМХО — правильно по возможности не порождать внешних по отношению к объекту связи. Например, имеется объект Company. Он инкапсулирует только то, что касается самого объекта: вычисления для которых достаточно данных самого объекта, навигацию по дочерним объектам, базовую валидацию и т.п. Если для выполнения какой-либо операции, типа CalcCreditRisk, требуется вовлечение внешних по отношению к объекту данных или использование других объектов, то такая операция должна выполняться другим объектам. Неважно как он называется, manager, service, controller, whatever. Т.е. в данном конкретном случае мы должны получить что-то типа:
public class Company
{
...
}
public class CompanyManager
{
public Company GetCompanyByID(int id)
{
}
public void AddCompany(Company company)
{
}
public void UpdateCompany(Company company)
{
}
public void DeleteCompany(Company company)
{
}
public CreditRiskResult CalcCreditRisk(Company company, ...)
{
}
}
Весь маппинг выполняется в соответствующих методах менеджера, в идеале в специальном слое — DAL.
... << RSDN@Home 1.1.4 beta 5 rev. 395>>