如何:使用程式碼從查詢擷取資料

 

如需 Visual Studio 2017 的最新文件請參閱 Visual Studio 2017 文件

您可以從模型中擷取查詢,然後在程式碼中加以執行。 這可讓您使用您的應用程式商務邏輯來處理目標資料集合。

例如,您的模型可能含有一個名為 Products in Stock 的查詢。 若要判斷某個產品是否可用,您可以撰寫可擷取 Products in Stock 查詢的驗證程式碼,然後執行該查詢。 執行查詢後,您的程式碼可以逐一查看結果集合。 如果這個集合中的產品符合目前銷售訂單中的產品,使用者可以通知客戶以告知延遲。

您還可以加入程式碼,透過使用 where 子句來縮小查詢結果。 使用 where 子句縮小查詢結果可以提高效能,因為 where 子句的條件是套用在伺服器層。 如需詳細資訊,請參閱查詢:從資料來源擷取資訊

下面 Helper 方法會在使用者於銷售訂單中加入一行新的資料時被呼叫。 如果您有一個名為 Order_Details 的實體,則可以從 Order_Details_Inserting 方法來呼叫這個方法。

此程式碼會透過執行名為 TopNSalesOrders 的查詢,根據銷售訂單來擷取前十大客戶。如果這個訂單的客戶 ID 符合查詢所傳回的任何客戶 ID,則該產品項目就會套用 10% 折扣。

        private void Good_Customer_Discount(Order_Detail entity)
        {
            foreach (Customer cust in this.DataWorkspace.NorthwindData.
         TopNSalesOrders(10))
            {
                if (cust.CustomerID == entity.Order.Customer.CustomerID)
                {
                    entity.Discount = 0.1F;
                }
            }
        }

下面程式碼可做為上一個範例的替代方法。 此程式碼會將 where 子句套用至 TopNSalesOrders 查詢,而且只在客戶是目前訂單的下單者時,才會傳回客戶。

        private void Good_Customer_Discount2(Order_Detail entity)
        {
            IDataServiceQueryable<Customer> query;

            query = from myCustomer in this.DataWorkspace.NorthwindData.
                        TopNSalesOrders(10)
                    where myCustomer.CustomerID == entity.Order.Customer.CustomerID
                    select myCustomer;
                 
            if (query.SingleOrDefault() != null)
            {
                entity.Discount = 0.1F;
            }
        }
        }

若要了解如何使用設計工具以視覺化方式設計查詢,請參閱 如何:使用查詢設計工具設計查詢

若要了解如何透過使用程式碼來擴充模型中的查詢,請參閱 如何:使用程式碼擴充查詢的功能

查詢:從資料來源擷取資訊
如何:新增、移除和修改查詢
逐步解說:設計螢幕
如何:使用查詢設計工具設計查詢
如何:使用程式碼擴充查詢的功能

顯示: