Ten artykuł został przetłumaczony ręcznie. Oryginalny tekst zobaczysz, umieszczając wskaźnik myszy nad zdaniami w artykule. Więcej informacji.
Tłumaczenie
Oryginał
Ten temat nie został jeszcze oceniony Oceń ten temat

Wykonywanie zadań związanych z danymi przy użyciu kodu

Visual Studio 2010

Można użyć projektantów i okien narzędzi w Visual Studio LightSwitch, aby wykonać wiele zadań związanych w projektowaniem danych. Jednak niektóre zadania można wykonywać tylko przez dodanie kodu do aplikacji. Na przykład, aby sprawdzić poprawność pola, stosując warunki niestandardowe, należy napisać kod. Ten dokument zawiera sposoby wykonywania zadań związanych z danymi przy użyciu modelu obiektowego runtime danych. Więcej informacji o tym, gdzie można wpisać kod w aplikacji, zobacz następujące tematy:

Aby uzyskać ogólne wytyczne na temat pisania kodu Visual Studio LightSwitch, zobacz Pisanie kodu w programie LightSwitch.

Na poniższej liście pokazano niektóre typowe powiązane dane zadań wykonywanych przy użyciu modelu obiektowego uruchamiania danych. Zadania są opisane w dalszej części tego dokumentu.

Można czytać pojedyncze elementy danych lub kolekcje elementów danych z dowolnego źródła danych w aplikacji.

Poniższy przykład pobiera klienta, który jest aktualnie zaznaczony na ekranie.


partial void RetrieveCustomer_Execute()
{
    Customer cust = this.Customers.SelectedItem;
    if (cust.ContactName == "Bob")
    {
        //Perform some task on the customer entity.
    }
}


Poniższy przykład wykonuje iterację na zbiorze klientów.


partial void RetrieveCustomers_Execute()
{
    foreach (Customer cust in this.DataWorkspace.NorthwindData.Customers)
    {
        if (cust.ContactName == "Bob")
        {
            //Perform some task on the customer entity.
        }
    }
}


Nawigacja po relacjach danych

Można odczytywać dane z jednostek powiązanych. Na przykład jednostka Klient może mieć relację jeden do wielu z jednostką Zamówienia. Można przejść przez wszystkie zamówienia, które zostały złożone przez klienta za pomocą właściwości Zamówienia jednostki Klient.

Poniższy przykład wykonuje iterację na kolekcji zamówień powiązanych z klientem.


partial void RetrieveSalesOrders_Execute()
{
    Customer cust = this.Customers.SelectedItem;

    foreach (Order order in cust.Orders)
    {
        if (order.OrderDate == DateTime.Today)
        {
            //perform some task on the order entity.
        }
    }
}


Poniższy przykład pobiera klienta, który złożył określone zamówienie.


partial void RetrieveCustomer_Execute()
{
    Order order = this.DataWorkspace.NorthwindData.Orders_Single
        (Orders.SelectedItem.OrderID);

    Customer cust = order.Customer;
    //Perform some task on the customer entity.

}


Odczytywanie danych przez wykonywanie zapytania

Można pobrać zapytania z modelu i wykonać je w kodzie. Aby wyświetlić przykład, zobacz Jak: Pobrać dane z zapytania przy użyciu kodu.

Można zaktualizować dane dla dowolnej jednostki przy użyciu kodu. W poniższym przykładzie przedstawiono kod, który jest uruchamiany, gdy użytkownik utworzy zamówienie w jednostce zamówienia na ekranie, a następnie kliknie przycisk Zapisz. Kod aktualizuje pole w jednostce Produkty za pomocą pola w jednostce Szczegóły zamówienia.


partial void Orders_Inserting(Order entity)
{
    foreach (Order_Detail detail in entity.Order_Details)
    {
        detail.Product.UnitsInStock = 
            (short?)(detail.Product.UnitsInStock - detail.Quantity);
    }
}


Uwaga Uwaga

Jeżeli kod modyfikuje dane z innego źródła danych, musisz zatwierdzić te zmiany przez wywołanie metody SaveChanges tego źródła danych. Aby uzyskać więcej informacji zobacz How to: Save Data.

Można usunąć dane, wywołując metodę Delete jednostki. Poniższy przykład usuwa klienta ze źródła danych NorthwindData.


partial void DeleteCustomer_Execute()
{
    Customer cust =
        this.Customers.SelectedItem;

    if (Customers.CanDelete)
    {
        cust.Delete();
    }
}


Poniższy przykład dodaje nowego klienta do źródła danych NorthwindData. W tym przykładzie wypełniono pola, które opisują nowego klienta przy użyciu informacji z kontaktu, który niedawno został dodany do listy programu SharePoint. Przykład wywołuje zapytanie o nazwie NewCustomersInSharePoint w celu określenia, które kontakty na liście programu SharePoint nie zostały jeszcze zaimportowane do źródła danych NorthwindData.


partial void ImportCustomers_Execute()
{
    foreach (SharePointCustomer spCust in
this.DataWorkspace.SharePointData.NewCustomersInSharePoint())
    {
        Customer newCust = new Customer();

        newCust.ContactName = spCust.FirstName + " " + spCust.LastName;
        newCust.Address = spCust.Address;
        newCust.City = spCust.City;
        newCust.PostalCode = spCust.PostalCode;
        newCust.Region = spCust.Region;

        //Set the CopiedToDatabase field of the item in SharePoint.
        spCust.CopiedToDatabase = "Yes";
    }
    this.DataWorkspace.SharePointData.SaveChanges();


}


Zazwyczaj oczekujące zmiany są zatwierdzane do źródła danych, gdy użytkownik kliknie przycisk Zapisz na ekranie. Jednakże można także zatwierdzić oczekujące zmiany przez dodanie kodu wywołującego metodę SaveChanges źródła danych. Jeśli chcesz wykonać którekolwiek z tych zadań, musisz dodać ten kod:

  • Zatwierdź zmiany wprowadzone w danych znajdujących się w innych źródłach danych.

  • Zastąp zdarzenie Save ekranu.

Zatwierdzanie zmian wprowadzonych w danych znajdujących się w innych źródłach danych.

Pliki, w których piszesz kod niestandardowy mają główne źródło danych. Jeżeli dodasz niestandardowy kod, który modyfikuje dane z innego źródła danych w rozwiązaniu LightSwitch, musisz zatwierdzić te zmiany przez wywołanie metody SaveChanges tego źródła danych.

W poniższym przykładzie przedstawiono kod, który jest uruchamiany, gdy użytkownik utworzy zamówienie w jednostce zamówienia na ekranie, a następnie kliknie przycisk Zapisz. Kod aktualizuje pole w jednostce Produkty za pomocą pola w jednostce Szczegóły zamówienia. Ponieważ jednostka produktów znajduje się w innym źródle danych, to kod wywołuje metodę SaveChanges tego źródła danych, aby zatwierdzić zmiany.


partial void Orders_Inserting(Order1 entity)
{
    foreach (Order_Detail1 detail in entity.Order_Details)
    {
        detail.Product.UnitsInStock = (short?)
            (detail.Product.UnitsInStock - detail.Quantity);
    }
    this.DataWorkspace.ProductDataSource.SaveChanges();

}


Zastępowanie zdarzenie zapisywania ekranu.

Można zmienić zachowanie przycisku Zapisz na ekranie przez zastąpienie zdarzenia Save. Ponieważ zastępujesz zachowanie przycisku Zapisz, kod musi wywoływać metodę SaveChanges, gdy chcesz zatwierdzić oczekujące zmiany.

Poniższy przykład zastępuje zdarzenie Save na ekranie klienta, aby uchwycić i obsłużyć określony wyjątek, który może zostać wygenerowany, jeśli operacja zapisu zakończy się niepowodzeniem.


partial void CustomersListDetail_Saving(ref bool handled)
{
    try
    {
        this.DataWorkspace.SharePointData.SaveChanges();
    }
    catch (DataServiceOperationException ex)
    {
        if (ex.ErrorInfo == "DTSException")
        {
            this.ShowMessageBox(ex.Message);
        }
        else
        {
            throw ex;
        }
    }
    handled = true;


}


Można zastosować reguły sprawdzania poprawności w niestandardowych polach jednostki. Można dodawać niestandardowe komunikaty o błędach wyświetlane, gdy użytkownicy zmodyfikują wartości właściwości w sposób, który nie jest zgodny z regułami sprawdzania poprawności. Aby uzyskać więcej informacji zobacz Jak: Sprawdzić poprawność danych

Domyślnie wszyscy użytkownicy mogą wyświetlać, wstawiać, usuwać lub aktualizować dane wyświetlane na ekranie. Może jednak ograniczyć te uprawnienia, dodając kod do jednej z następujących metod:

  • CanRead

  • CanInsert

  • CanDelete

  • CanUpdate

Jeśli ograniczysz operację przy użyciu tych metod, LightSwitch powoduje, że operacja jest niedostępna dla użytkowników, którzy nie mają nieograniczonych uprawnień. Aby uzyskać więcej informacji zobacz Jak: Obsłużyć zdarzenia powiązane z danymi.

Poniższy przykład pozwala użytkownikowi na aktualizowanie informacji o kliencie, jeśli użytkownik ma uprawnienia do aktualizacji. Poniższy przykład kodu wymaga grupy uprawnień o nazwie RoleUpdate. Aby uzyskać więcej informacji na temat dodawania grup zezwoleń do aplikacji, zobacz Włączenie autoryzacji i uprawnień tworzenia.


partial void Customers_CanUpdate(ref bool result)
{
    this.Application.User.HasPermission(Permissions.RoleUpdate);
}


Domyślnie LightSwitch wywołuje te metody, gdy użytkownik próbuje wyświetlić, wstawić, usunąć lub zaktualizować informacje. Metody te można również wywołać w niestandardowym kodzie przed odczytem lub modyfikacją danych.

Można zidentyfikować i odrzucić zmiany oczekujące, zanim zostaną zatwierdzone dla źródła danych. Poniższy przykład przedstawia trzy metody pomocnika, które identyfikują i odrzucają oczekujące zmiany. Metoda UndoAllCustomerUpdates odrzuca wszystkie zmiany wprowadzone do wszystkich klientów. Metoda UndoAllUpdates odrzuca wszystkie zmiany wprowadzone do źródła danych. Metoda UndoCustomerEdit odrzuca zmiany wprowadzone w aktualnie zaznaczonym wierszu danych na ekranie klienta.


partial void UndoAllCustomerUpdates_Execute()
{
    foreach (Customer cust in 
        this.DataWorkspace.NorthwindData.Details.
        GetChanges().OfType<Customer>())
    {
        cust.Details.DiscardChanges();
    }
}

partial void UndoAllUpdates_Execute()
{
    this.DataWorkspace.NorthwindData.Details.DiscardChanges();
}

partial void UndoCustomerEdit_Execute()
{
    Customers.SelectedItem.Details.DiscardChanges();
}


Jeśli chcesz zmodyfikować zapytanie poza możliwościami projektanta zapytań, możesz rozszerzyć zapytania przez dodanie kodu do metody PreProcessQuery zapytania. Aby uzyskać więcej informacji zobacz Jak: Rozszerzyć zapytanie przy użyciu kodu.

Oceniasz te materiały jako pomocne?
(Pozostało znaków: 1500)
Zawartość społeczności Dodaj
Adnotacje FAQ