再利用可能なビジネスオブジェクトを使用する場合、ビューモデルを構築する際のベストプラクティスとは何ですか?
呼び出すオブジェクトを使用して、Builderビューモデルを構築します。ビューの各論理ユニット(オーダー、ユーザーなど)ごとに1つのビルダー。ここで、各ユニットにはさまざまなビューモデルを含めることができます(オーダーにはサマリー、オーダーラインなどが含まれます)。
ビルダーは、ビューモデルを構築するために、1つ以上の標準ビジネスオブジェクトを介してデータをプルする場合があります。
ビューモデルでビジネスオブジェクト/モデルを使用する場合のベストプラクティスとは何ですか?
アプローチ1
ビューモデルでビジネスオブジェクトの使用を許可しますか?
//Business object in some library
public class Order
{
    public int OrderNum;
    public int NumOrderLines;
    //...
}
//Order builder in website
public class OrderBuilder
{
    public OrderSummary BuildSummaryForOrder(int OrderNum)
    {
        Some.Business.Logic.Order obOrder = Some.Business.Logic.GetOrder(OrderNum);
        //Any exception handling, additional logic, or whatever
        OrderSummary obModel = new OrderSummary();
        obModel.Order = obOrder;
        return obModel;
    }
}
//View model
public class OrderSummary
{
    public Some.Business.Logic.Order Order;
    //Other methods for additional logic based on the order
    //and other properties
}
アプローチ2
ビジネスオブジェクトから必要なデータのみを取得する
//Business object in some library
public class Order
{
    public int OrderNum;
    public int NumOrderLines;
    //...
}
//Order builder in website
public class OrderBuilder
{
    public OrderSummary BuildSummaryForOrder(int OrderNum)
    {
        Some.Business.Logic.Order obOrder = Some.Business.Logic.GetOrder(OrderNum);
        //Any exception handling, additional logic, or whatever
        OrderSummary obModel = new OrderSummary()
        {
            OrderNum = obOrder.OrderNum,
            NumOrderLnes = obOrder.NumOrderLines,
        }
        return obModel;
    }
}
//View model
public class OrderSummary
{
    public int OrderNum;
    public int NumOrderLines
    //Other methods for additional logic based on the order
    //and other properties
}
私は両方の利点と欠点を見ることができますが、受け入れられたアプローチがあるのだろうか?アプローチ1では、モデルの周りにコードの重複はありませんが、ビジネスロジックへの依存関係を作成します。アプローチ2では、ビューに必要なデータのみを取得しますが、モデルの周りにコードを複製します。