1
  • SubSonic に関係を伝えるにはどのような方法がありますか (外部キーのみですか? または他の方法も)?
  • (たとえば) 関連するチーム メンバーを含むチーム オブジェクトがあるとします。

    ** チームからチーム メンバーにアクセスして更新する方法

    ** チーム メンバーを更新するにはどうすればよいですか? チーム オブジェクトを保存すると、チーム メンバーの変更が保存されますか

    ** チームにメンバーを追加するにはどうすればよいですか? 新しいメンバーを作成し、チーム ID を外部キーに割り当てて保存するだけですか? または、よりオブジェクト指向の方法がありますか (例: team.Add(teamMember))

4

1 に答える 1

3

Subsonic コード生成は、テーブルの外部キー関係を読み取り、テーブル クラスに必要なヘルパー メソッドを作成します。Northwind Product クラスには、OrderDetail クラスとの PrimaryKey リレーションシップがあります。サブソニックはメソッドを生成します

public Northwind.OrderDetailCollection OrderDetails()

OrderDetail 行を OrderDetailCollection として取得します。これは必要に応じて変更できる BindingList であり、SaveAll() を呼び出してリストを保存します。詳細な保存は行われないため、Product を保存しても、関連する OrderDetail 行は保存されません。

[Test]
public void Demo_Product_OrderDetails()
{
    Product product = new Product(3); // Read an existing row.
    OrderDetailCollection orderDetails = product.OrderDetails();
    Assert.IsTrue(orderDetails.Count == 12);
    foreach(OrderDetail orderDetail in orderDetails)
    {
        orderDetail.Discount -= 0; // Do something meaningful.
    }
    OrderDetail newDetail = new OrderDetail();
    newDetail.ProductID = 3;
    newDetail.OrderID = 10248;
    newDetail.UnitPrice = 7.00m;
    newDetail.Discount = 0.10f;
    newDetail.Quantity = 12;
    orderDetails.Add(newDetail);
    orderDetails.SaveAll();

    orderDetails = product.OrderDetails();
    Assert.IsTrue(orderDetails.Count == 13);

    OrderDetail.Destroy(newDetail.OrderID);

    orderDetails = product.OrderDetails();
    Assert.IsTrue(orderDetails.Count == 12);

}
于 2009-05-08T06:55:20.493 に答える