1

次の遅延コードがあります。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,
       ...

     }
  }
}
4

0 に答える 0