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 / Notatka

Na komputerze mogą być wyświetlane różne nazwy lub lokalizacje niektórych elementów interfejsu użytkownika programu Visual Studio w poniższych instrukcjach. Wersja programu Visual Studio i ustawienia, których używasz, określają te elementy. Aby uzyskać więcej informacji, zobacz Personalizowanie środowiska IDE.

Ten przewodnik został napisany przy użyciu ustawień programowania języka Visual C#.

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 baza 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 narzędzia Object Relational Designer lub 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).

Przegląd

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ć 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 Project 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łączenia z bazą 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 F5, aby przetestować aplikację w tym momencie.

    Zostanie otwarte okno Konsola .

    Aplikację można zamknąć, naciskając 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 pod koniec 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 F5, aby debugować rozwiązanie.

  3. Naciśnij 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 F5, aby debugować rozwiązanie.

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

Uwaga / Notatka

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

Zobacz także