2009-09-08 53 views
0

我一直在關注如何實現Silverlight應用程序的this教程。本教程使用Northwind數據庫作爲示例。我一直在使用代碼示例來實現與使用我自己的數據庫將本教程展示到我自己的應用程序中相同的功能。本教程的最後部分介紹瞭如何將新項目和關聯關係添加到Northwind數據庫中的特定表格中。這個特殊的例子演示了使用下面的代碼3個鏈接表(產品,訂單,ORDER_DETAILS)此功能:Silverlight異步Crud插入:一對一的關係?

private void addDetail_Click(object sender, RoutedEventArgs e) 
{ 
    // Define a URI that returns the product with the specified ID. 
    Uri productUri = new Uri(svcContext.BaseUri.AbsoluteUri 
     + "/Products(" + this.productId.Text + ")"); 

    // Begin a query operation retrieve the Product object 
    // that is required to add a link to the new Order_Detail. 
    svcContext.BeginExecute<Products>(productUri, 
     OnProductQueryCompleted, null); 
} 

private void OnProductQueryCompleted(IAsyncResult result) 
{ 
    // Use the Dispatcher to ensure that the 
    // asynchronous call returns in the correct thread. 
    Dispatcher.BeginInvoke(() => 
     { 
      // Get the Product returned by the completed query. 
      IEnumerable<Products> queryResult = 
       svcContext.EndExecute<Products>(result); 
      Products returnedProduct = queryResult.First(); 

      // Get the currently selected order. 
      Orders currentOrder = (Orders)ordersGrid.SelectedItem; 

      // Create a new Order_Details object with the supplied FK values. 
      Order_Details newItem = Order_Details.CreateOrder_Details(currentOrder.OrderID, 
       returnedProduct.ProductID, 0, 0, 0); 

      detailsBindingCollection.Add(newItem); 

      // Add the new item to the context. 
      svcContext.AddToOrder_Details(newItem); 

      // Add the relationship between the order and the new item. 
      currentOrder.Order_Details.Add(newItem); 
      svcContext.AddLink(currentOrder, "Order_Details", newItem); 

      // Set the reference to the order and product from the item. 
      newItem.Orders = currentOrder; 
      svcContext.SetLink(newItem, "Orders", currentOrder); 

      // Add the relationship between the product and the new item. 
      returnedProduct.Order_Details.Add(newItem); 
      svcContext.AddLink(returnedProduct, "Order_Details", newItem); 

      // Set the reference to the product from the item. 
      newItem.Products = returnedProduct; 
      svcContext.SetLink(newItem, "Products", returnedProduct); 
     } 
    ); 
} 

我的數據庫腳本:

CREATE TABLE InmarsatZenith.dbo.ClientJob 
(JobRef nvarchar(15), 
Summary text 
PRIMARY KEY(JobRef)) 

CREATE TABLE InmarsatZenith.dbo.Job 
(IntRef uniqueidentifier, 
JobRef nvarchar(15), 
CopyDeadline datetime, 
PublicationDate datetime, 
Repeat bit, 
BusinessType nvarchar(25), 
Sector nvarchar(30), 
Lang nvarchar(15), 
Format nvarchar(25), 
CreativeRotation nvarchar(50), 
TipinType nvarchar(25), 
Status nvarchar(100) 
PRIMARY KEY(IntRef)) 

CREATE TABLE InmarsatZenith.dbo.Detail 
(IntRef uniqueidentifier, 
Description nvarchar(100), 
Date datetime 
PRIMARY KEY(IntRef)) 

之間存在一個一對多的關係客戶的工作和工作(1個客戶的工作可以有很多工作)。工作和細節之間的一對一關係。

問題是,我想在我的應用程序中實現相同的異步方法,但是要實現更簡單的一對一關係。所以基本上我希望能夠將新的Job添加到我的「Job」表中,然後將相關的詳細信息添加到我的「Job Details」表中。我在嘗試轉換此代碼示例以使用此特定方法時遇到了一些麻煩,並且非常感謝在調整此代碼以適用於一對一關係方面的一些幫助。

如果有人能夠啓發我這個問題,我會非常感激。

親切的問候,在此先感謝。

回答