Привет.
Может у кого будут дельные советы по следующей проблеме:
Есть BusinessObject
public class TaxEntity : ITaxEntity
{
private ITaxRow taxRow;
public TaxEntity(ITaxRow taxRow)
{
this.taxRow = taxRow;
}
public decimal? Amount
{
get
{
return taxRow.Amount;
}
set
{
taxRow.Amount = value;
}
}
#endregion
public ITaxRow TaxRow
{
get { return taxRow; }
}
}
и маппер на эту ентити:
public class TaxMapper : ITaxMapper
{
private ITaxGateway gateway;
public TaxMapper(ITaxGateway gateway)
{
this.gateway = gateway;
}
public ITaxEntity GetPurchaseOrderTax(int orderId)
{
return new TaxEntity(gateway.GetPurchaseOrderTax(orderId));
}
public void UpdatePurchaseOrderTax(ITaxEntity tax)
{
gateway.UpdatePurchaseOrdertax(tax.TaxRow);
}
}
Идея — маппер знает все о том как поднимать и сохранять BusinessEntity, а она в свою очередь ничего о нем не знает:
ITaxEntity tax = taxMapper.GetPurchaseOrderTax(orderId);
// Do smth with tax
taxMapper.UpdatePurchaseOrderTax(tax);
Проблема:
Из BusinessEntity "торчит" объект, который представляет собой одну запись в таблице (TaxRow), для того чтобы маппер мог достать его и передать в Gateway. Это естественно нарушает инкапсуляцию и му4ает мою совесть — так как я хочу исклю4ить любую возможность доступа из бизнеслогики к датааксесс классам.
Вопрос:
Как избавиться от этого поля?
Все фигня кроме п4ел... П4елы впринципе тоже фигня, но их много.