Share via


Gewusst wie: Hinzufügen eines Objekts zu einer bestimmten Entitätenmenge (Entity Framework)

In diesem Thema wird das im Thema Gewusst wie: Definieren eines Modells mit mehreren Entitätenmengen pro Typ (Entity Framework) entworfene Entity Data Model (EDM) verwendet.

So erstellen Sie eine Anwendung mit mehreren Entitätenmengen pro Typ

  1. Erstellen Sie ein Konsolenanwendungsprojekt, und fügen Sie Verweise auf System.Data.Entity und System.Runtime.Serialization hinzu.

  2. Fügen Sie einen Verweis auf die DLL hinzu, die von dem im Thema Gewusst wie: Definieren eines Modells mit mehreren Entitätenmengen pro Typ (Entity Framework) definierten Datenmodell erstellt wird.

  3. Fügen Sie eine Anwendungskonfigurationsdatei hinzu. Die folgende Syntax stellt einen Pfad zu Schemametadaten und eine Verbindungszeichenfolge für den Server zur Verfügung, auf dem die Daten gehostet werden.

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <connectionStrings>
    <add name="RegionalCustomersEntities" 
         connectionString="metadata=.;
         provider=System.Data.SqlClient;
         provider connection string=&quot;
         Data Source=serverName;
         Initial Catalog=RegionalCustomersMEST;
         Integrated Security=True;
         multipleactiveresultsets=true&quot;" 
         providerName="System.Data.EntityClient" />
  </connectionStrings>

</configuration>

Hinzufügen der Entitäten "Customer" und "Order" zu Entitätenmengen, die die westliche Region darstellen

Der folgende Code erstellt eine neue Instanz des Customer-Typs und fügt sie einer Entitätenmenge hinzu, die geografisch den westlichen Bereich darstellt.

So fügen Sie Entitäten des gleichen Typs unterschiedlichen Entitätenmengen hinzu

  1. Erstellen Sie eine Instanz des Typs CustomerWest, und initialisieren Sie die Eigenschaften CustomerId, Name und TotalPurchases des Kunden.

  2. Erstellen Sie eine Instanz des Typs OrderWest, und initialisieren Sie die Eigenschaften der Bestellung.

  3. Weisen Sie den in Schritt 1 erstellten Kunden der neuen Bestellung zu.

  4. Fügen Sie die Instanzen von CustomerWest und OrderWest mithilfe der AddTCustomersWest-Methode und der AddToOrdersWest-Methode dem Speicher hinzu. Diese Methoden werden erstellt, wenn das Datenmodell von Edmgen.exe generiert wird.

  5. Erstellen Sie eine weitere OrderWest-Instanz mit dem Namen newOrder.

  6. Erstellen Sie einen ObjectParameter zur Verwendung in einer Abfrage des in Schritt 1 erstellten Kunden.

  7. Abfrage zum Suchen des Kunden.

  8. Aktualisieren Sie die TotalPurchases-Eigenschaft des Kunden, indem Sie die newOrderTotalAmount-Eigenschaft der TotalPurchases-Eigenschaft des Kunden hinzufügen.

  9. Weisen Sie den Kunden newOrder zu.

  10. Fügen Sie newOrder dem Speicher mithilfe der AddToOrdersWest-Methode hinzu.

Beispiel

Option Explicit On
Module Module1
    Sub Main()
        Try
            Using objCtx As RegionalCustomersEntities = _
                        New RegionalCustomersEntities()

                ' Create a new customer.
                Dim customerWest As New Customer()
                customerWest.CustomerId = _
                         objCtx.CustomersWest.Count() + 1
                customerWest.Name = _
                         "CustomerWest " + _
                              customerWest.CustomerId.ToString()
                customerWest.TotalPurchases = CType(875, Decimal)

                ' Create Order.
                Dim orderWest As New OrderWest()
                orderWest.OrderId = _
                         objCtx.OrdersWest.Count() + 1
                orderWest.OrderTotal = customerWest.TotalPurchases
                orderWest.Tax = _
                         orderWest.OrderTotal * CType(0.07, Decimal)

                orderWest.Customer = customerWest

                ' Add customer and order to object context.
                objCtx.AddToCustomersWest("customerWest)
                objCtx.AddToOrdersWest(orderWest)

                objCtx.SaveChanges()

                ' Add order to existing customer.
                Dim newOrder As New OrderWest
                newOrder.OrderId = objCtx.OrdersWest.Count + 1
                newOrder.OrderTotal = CType(338.0, Decimal)
                newOrder.Tax = newOrder.OrderTotal * CType(0.07, Decimal)

                Dim param As New ObjectParameter("p", 3)
                If Not 0 = objCtx.CustomersWest. _
                      Where("it.CustomerId = @p", param).Count() Then
                    Dim c As Customer = _
                        objCtx.CustomersWest. _
                        Where("it.CustomerId = @p", param).FirstOrDefault()

                    c.TotalPurchases = c.TotalPurchases + newOrder.OrderTotal

                    newOrder.Customer = c
                    objCtx.SaveChanges()

                End If

            End Using
        Catch ex As Exception
            Console.WriteLine(ex.ToString())
        End Try
    End Sub
End Module
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using RegionalCustomersModel;
using System.Data.Objects;

namespace ClientRegionalCustomers
{
    class Program
    {
        static void Main(string[] args)
        {
            try
            {
                using (RegionalCustomersEntities objCtx = 
                           new RegionalCustomersEntities())
                {
                    // Create a new customer.
                    Customer customerWest = new Customer();

                    customerWest.CustomerId =
                        objCtx.CustomersWest.Count<Customer>() + 1;

                    customerWest.Name = 
                        "Customer West " + 
                        customerWest.CustomerId.ToString();

                    customerWest.TotalPurchases = 
                        (decimal)875.00;

                    // Create Order.
                    OrderWest orderWest = new OrderWest();
                    orderWest.OrderId = 
                        objCtx.OrdersWest.Count<OrderWest>() + 1;

                    orderWest.OrderTotal = 
                        customerWest.TotalPurchases;
                    orderWest.Tax = 
                        orderWest.OrderTotal * (decimal).07;

                    orderWest.Customer = customerWest;

                    // Add customer and order to object context.
                    objCtx.AddToCustomersWest(customerWest);
                    objCtx.AddToOrdersWest(orderWest);

                    objCtx.SaveChanges();

                    // Add an order to existing customer.
                    OrderWest newOrder = new OrderWest();
                    newOrder.OrderId =
                        objCtx.OrdersWest.Count<OrderWest>() + 1;
                    newOrder.OrderTotal = (decimal)338.00;
                    newOrder.Tax = 
                               newOrder.OrderTotal * (decimal).07;

                    ObjectParameter param = 
                        new ObjectParameter("p", 3);
                    if (0 != objCtx.CustomersWest.Where(
                        "it.CustomerId = @p",
                         param).Count<Customer>())
                    {
                        Customer c =
                            objCtx.CustomersWest.Where(
                            "it.CustomerId = @p", 
                            param).First<Customer>();

                        c.TotalPurchases =
                            c.TotalPurchases + newOrder.OrderTotal;

                        newOrder.Customer = c;
                        
                        objCtx.SaveChanges();
                    }
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e.ToString());
            }
        }
    }
}

Siehe auch

Aufgaben

Gewusst wie: Definieren eines Modells mit mehreren Entitätenmengen pro Typ (Entity Framework)
Gewusst wie: Erstellen und Ausführen von Objektabfragen mit mehreren Entitätenmengen pro Typ (Entity Framework)