次の遅延コードがあります。Pesistence Model と (貧血) Domain Model の間には分離があります。この分離と暗黙の変換の利点は何ですか? 欠点はありますか?
私は、暗黙的な変換で以下が可能であることを知っています: SplitAmountEF saEF = dbContext.SplitAmount.Find(id); SplitAmount sa = saEF; //暗黙の変換。交換して使用できます。
ドメイン モデルが永続モデルとほぼ同じである場合は、(ドメイン モデルをまったく使用せずに) 永続モデルのみを使用した方がよいのではないでしょうか。
例:
//Domain Model
public class Booking
{
public Guid ID {get; set;}
....
}
public class SplitAmount
{
public Guid ID {get; set;}
public Decimal Amount {get; set;}
...
public Guid IDBooking {get; set;}
}
//Persistence Model
public class BookingEF
{
public Guid ID {get; set;}
...
}
public class SplitAmountEF
{
public Guid ID {get; set;}
public Decimal Amount {get; set;}
...
public virtual BookingEF Parent {get; set;}
//implicit converstion from SplitAmountEF to SplitAmount
public static implicit SplitAmount(SplitAmountEF saEF)
{
return new SplitAmount()
{
ID = saEF.ID,
Amount = saEF.Amount,
...
IDBooking = saEF.Parent.ID,
}
}
//implicit converstion from SplitAmount to SplitAmountEF
public static implicit SplitAmountEF(SplitAmount sa)
{
return new SplitAmountEF()
{
ID = sa.ID,
Amount = sa.Amount,
...
}
}
}