- SubSonic に関係を伝えるにはどのような方法がありますか (外部キーのみですか? または他の方法も)?
(たとえば) 関連するチーム メンバーを含むチーム オブジェクトがあるとします。
** チームからチーム メンバーにアクセスして更新する方法
** チーム メンバーを更新するにはどうすればよいですか? チーム オブジェクトを保存すると、チーム メンバーの変更が保存されますか
** チームにメンバーを追加するにはどうすればよいですか? 新しいメンバーを作成し、チーム ID を外部キーに割り当てて保存するだけですか? または、よりオブジェクト指向の方法がありますか (例: team.Add(teamMember))
1193 次
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 に答える