1

従来のado.netを使用した集約ルートの簡単なCRUDステートメントを誰かに見せてもらえますか?前もって感謝します!

4

1 に答える 1

1

(これは、GUIDまたはデータベースで生成されていない主キーが使用されることを前提に記述されています)また、接続管理などの多くのボイラーコードをリポジトリの基本クラスに移動する必要があります。Orderが集約ルートである場合、OrderLineRepoをアセンブリに対してプライベートにする必要があります。

public class OrderRepository : Repository

{
    public void Save(Order order)
    {
        if(order.IsDirty)
        {
                    //sets up connection if required, command and sql
            ICommand command = BuildCommandForSave(order);  
            command.Execute();
            OrderLineRepository orderLineRepo = GetOrderLineRepo();
            foreach(OrderLine line in order.OrderLines)
            {
                orderLineRepo.Save(line);
            }
        }
    }
}

ただし、これは本当に単純な単純な実装であり、十分にテストされた永続性レイヤーの要件が重要であるため、DDDを実行する場合は、永続性にnHibernateのようなORMを個人的に利用することを強調します。

また、これはIsDirty関数が子を考慮に入れることを前提としています-注文がダーティだけでなく、新しい/編集されているかどうかを確認する手段も必要になります

于 2009-08-20T09:07:23.713 に答える