Udostępnij za pośrednictwem


Przewodnik: Manipulowanie danymi (C#)

Ten przewodnik zawiera podstawowy scenariusz LINQ to SQL umożliwiający dodawanie, modyfikowanie i usuwanie danych w bazie danych. Użyjesz kopii przykładowej bazy danych Northwind, aby dodać klienta, zmienić nazwę klienta i usunąć zamówienie.

Uwaga

Na komputerze w poniższych instrukcjach mogą być wyświetlane inne nazwy i lokalizacje niektórych elementów interfejsu użytkownika programu Visual Studio. Te elementy są określane przez numer wersji Visual Studio oraz twoje ustawienia. Aby uzyskać więcej informacji, zobacz Personalizowanie środowiska IDE.

Ten przewodnik został napisany przy użyciu programu Visual C# Development Ustawienia.

Wymagania wstępne

Ten przewodnik wymaga następujących elementów:

  • Ten przewodnik używa dedykowanego folderu ("c:\linqtest6") do przechowywania plików. Przed rozpoczęciem przewodnika utwórz ten folder.

  • Przykładowa bazy danych Northwind.

    Jeśli nie masz tej bazy danych na komputerze dewelopera, możesz pobrać ją z witryny pobierania firmy Microsoft. Aby uzyskać instrukcje, zobacz Pobieranie przykładowych baz danych. Po pobraniu bazy danych skopiuj plik northwnd.mdf do folderu c:\linqtest6.

  • Plik kodu C# wygenerowany z bazy danych Northwind.

    Ten plik można wygenerować przy użyciu Projektant relacyjnych obiektów lub narzędzia SQLMetal. Ten przewodnik został napisany przy użyciu narzędzia SQLMetal z następującym wierszem polecenia:

    sqlmetal /code:"c:\linqtest6\northwind.cs" /language:csharp "C:\linqtest6\northwnd.mdf" /pluralize

    Aby uzyskać więcej informacji, zobacz SqlMetal.exe (Narzędzie generowania kodu).

Omówienie

Ten przewodnik składa się z sześciu głównych zadań:

  • Tworzenie rozwiązania LINQ to SQL w programie Visual Studio.

  • Dodawanie pliku kodu bazy danych do projektu.

  • Tworzenie nowego obiektu klienta.

  • Modyfikowanie nazwy kontaktu klienta.

  • Usuwanie zamówienia.

  • Przesyłanie tych zmian do bazy danych Northwind.

Tworzenie rozwiązania LINQ to SQL

W tym pierwszym zadaniu utworzysz rozwiązanie programu Visual Studio zawierające niezbędne odwołania do kompilowania i uruchamiania projektu LINQ to SQL.

Aby utworzyć rozwiązanie LINQ to SQL

  1. W menu Plik programu Visual Studio wskaż polecenie Nowy, a następnie kliknij pozycję Projekt.

  2. W okienku Typy projektów w oknie dialogowym Nowy projekt kliknij pozycję Visual C#.

  3. W okienku Szablony kliknij pozycję Aplikacja konsolowa.

  4. W polu Nazwa wpisz LinqDataManipulationApp.

  5. W polu Lokalizacja sprawdź, gdzie chcesz przechowywać pliki projektu.

  6. Kliknij przycisk OK.

Dodawanie odwołań i dyrektyw LINQ

W tym przewodniku używane są zestawy, które mogą nie być instalowane domyślnie w projekcie. Jeśli element System.Data.Linq nie jest wymieniony jako odwołanie w projekcie, dodaj go zgodnie z opisem w następujących krokach:

Aby dodać element System.Data.Linq

  1. W Eksplorator rozwiązań kliknij prawym przyciskiem myszy pozycję Odwołania, a następnie kliknij polecenie Dodaj odwołanie.

  2. W oknie dialogowym Dodawanie odwołania kliknij pozycję .NET, kliknij zestaw System.Data.Linq, a następnie kliknij przycisk OK.

    Zestaw jest dodawany do projektu.

  3. Dodaj następujące dyrektywy w górnej części Program.cs:

    using System.Data.Linq;
    using System.Data.Linq.Mapping;
    

Dodawanie pliku kodu Northwind do projektu

W tych krokach założono, że użyto narzędzia SQLMetal do wygenerowania pliku kodu z przykładowej bazy danych Northwind. Aby uzyskać więcej informacji, zobacz sekcję Wymagania wstępne we wcześniejszej części tego przewodnika.

Aby dodać plik kodu northwind do projektu

  1. W menu Projekt kliknij pozycję Dodaj istniejący element.

  2. W oknie dialogowym Dodawanie istniejącego elementu przejdź do folderu c:\linqtest6\northwind.cs, a następnie kliknij przycisk Dodaj.

    Plik northwind.cs jest dodawany do projektu.

Konfigurowanie Połączenie bazy danych

Najpierw przetestuj połączenie z bazą danych. Należy pamiętać, że baza danych Northwnd nie ma znaku i. Jeśli w następnych krokach wygenerujesz błędy, zapoznaj się z plikiem northwind.cs, aby ustalić, jak jest pisownia częściowej klasy Northwind.

Aby skonfigurować i przetestować połączenie z bazą danych

  1. Wpisz lub wklej następujący kod do Main metody w klasie Program:

    // Use the following connection string.
    Northwnd db = new Northwnd(@"c:\linqtest6\northwnd.mdf");
    
    // Keep the console window open after activity stops.
    Console.ReadLine();
    
  2. Naciśnij klawisz F5, aby przetestować aplikację w tym momencie.

    Zostanie otwarte okno Konsola.

    Aplikację można zamknąć, naciskając klawisz Enter w oknie Konsola lub klikając polecenie Zatrzymaj debugowanie w menu Debugowanie programu Visual Studio.

Tworzenie nowej jednostki

Tworzenie nowej jednostki jest proste. Obiekty (takie jak Customer) można tworzyć przy użyciu słowa kluczowego new .

W tych i poniższych sekcjach wprowadzasz zmiany tylko w lokalnej pamięci podręcznej. Żadne zmiany nie są wysyłane do bazy danych do momentu wywołania SubmitChanges na końcu tego przewodnika.

Aby dodać nowy obiekt jednostki Klient

  1. Utwórz nowy Customer , dodając następujący kod przed Console.ReadLine(); w metodzie Main :

    // Create the new Customer object.
    Customer newCust = new Customer();
    newCust.CompanyName = "AdventureWorks Cafe";
    newCust.CustomerID = "ADVCA";
    
    // Add the customer to the Customers table.
    db.Customers.InsertOnSubmit(newCust);
    
    Console.WriteLine("\nCustomers matching CA before insert");
    
    foreach (var c in db.Customers.Where(cust => cust.CustomerID.Contains("CA")))
    {
        Console.WriteLine("{0}, {1}, {2}",
            c.CustomerID, c.CompanyName, c.Orders.Count);
    }
    
  2. Naciśnij klawisz F5, aby debugować rozwiązanie.

  3. Naciśnij klawisz Enter w oknie Konsola, aby zatrzymać debugowanie i kontynuować przewodnik.

Aktualizowanie jednostki

W poniższych krokach pobierzesz Customer obiekt i zmodyfikujesz jedną z jego właściwości.

Aby zmienić nazwę klienta

  • Dodaj następujący kod powyżej Console.ReadLine();:

    // Query for specific customer.
    // First() returns one object rather than a collection.
    var existingCust =
        (from c in db.Customers
         where c.CustomerID == "ALFKI"
         select c)
        .First();
    
    // Change the contact name of the customer.
    existingCust.ContactName = "New Contact";
    

Usuwanie jednostki

Korzystając z tego samego obiektu klienta, można usunąć pierwsze zamówienie.

Poniższy kod pokazuje, jak zerwać relacje między wierszami i jak usunąć wiersz z bazy danych. Dodaj następujący kod przed Console.ReadLine , aby zobaczyć, jak można usunąć obiekty:

Aby usunąć wiersz

  • Dodaj następujący kod tuż powyżej Console.ReadLine();:

    // Access the first element in the Orders collection.
    Order ord0 = existingCust.Orders[0];
    
    // Access the first element in the OrderDetails collection.
    OrderDetail detail0 = ord0.OrderDetails[0];
    
    // Display the order to be deleted.
    Console.WriteLine
        ("The Order Detail to be deleted is: OrderID = {0}, ProductID = {1}",
        detail0.OrderID, detail0.ProductID);
    
    // Mark the Order Detail row for deletion from the database.
    db.OrderDetails.DeleteOnSubmit(detail0);
    

Przesyłanie zmian do bazy danych

Ostatnim krokiem wymaganym do tworzenia, aktualizowania i usuwania obiektów jest rzeczywiste przesłanie zmian do bazy danych. Bez tego kroku zmiany są tylko lokalne i nie będą wyświetlane w wynikach zapytania.

Aby przesłać zmiany do bazy danych

  1. Wstaw następujący kod tuż powyżej Console.ReadLine:

    db.SubmitChanges();
    
  2. Wstaw następujący kod (po SubmitChanges), aby pokazać efekty przed i po przesłaniu zmian:

    Console.WriteLine("\nCustomers matching CA after update");
    foreach (var c in db.Customers.Where(cust =>
        cust.CustomerID.Contains("CA")))
    {
        Console.WriteLine("{0}, {1}, {2}",
            c.CustomerID, c.CompanyName, c.Orders.Count);
    }
    
  3. Naciśnij klawisz F5, aby debugować rozwiązanie.

  4. Naciśnij klawisz Enter w oknie Konsola, aby zamknąć aplikację.

Uwaga

Po dodaniu nowego klienta przez przesłanie zmian nie można wykonać tego rozwiązania ponownie, tak jak to jest. Aby ponownie wykonać rozwiązanie, zmień nazwę klienta i identyfikatora klienta, który ma zostać dodany.

Zobacz też