Partager via


Procédure : ajouter un objet à un jeu d'entités spécifique ((Entity Framework)

Cette rubrique utilise le modèle EDM (Entity Data Model) conçu dans la rubrique Procédure : définir un modèle avec jeux d'entités multiples par type (Entity Framework).

Pour créer une application à l'aide de jeux d'entités multiples par type

  1. Créez un projet d'application console et ajoutez des références à System.Data.Entity et System.Runtime.Serialization.

  2. Ajoutez une référence à la DLL générée à partir du modèle de données défini dans la rubrique Procédure : définir un modèle avec jeux d'entités multiples par type (Entity Framework).

  3. Ajoutez un fichier de configuration de l'application. La syntaxe suivante fournit un chemin d'accès aux métadonnées de schéma et une chaîne de connexion au serveur qui héberge les données.

<?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>

Ajouter des entités Customer et Order à des jeux d'entités qui représentent la région Western

Le code suivant crée une nouvelle instance de type Customer et l'ajoute à un jeu d'entités qui représente la zone géographique occidentale.

Pour ajouter des entités de même type à des jeux d'entités distincts

  1. Créez une instance de type CustomerWest et initialisez les propriétés CustomerId, Name et TotalPurchases du client.

  2. Créez une instance de type OrderWest et initialisez les propriétés de la commande.

  3. Assignez le client créé à l'étape 1 à la nouvelle commande.

  4. Ajoutez les instances de CustomerWest et de OrderWest au stockage à l'aide des méthodes AddTCustomersWest et AddToOrdersWest. Ces méthodes sont créées lors de la génération du modèle de données par Edmgen.exe.

  5. Créez une autre instance OrderWest nommée newOrder.

  6. Créez un ObjectParameter à utiliser dans une requête pour le client créée à l'étape 1.

  7. Exécutez la requête pour rechercher le client.

  8. Mettez à jour la propriété TotalPurchases du client en ajoutant la propriété newOrderTotalAmount au TotalPurchases du client.

  9. Assignez le client au newOrder.

  10. Ajoutez newOrder au stockage à l'aide de la méthode AddToOrdersWest.

Exemple

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());
            }
        }
    }
}

Voir aussi

Tâches

Procédure : définir un modèle avec jeux d'entités multiples par type (Entity Framework)
Procédure : créer et exécuter des requêtes d'objet à l'aide de jeux d'entités multiples par type (Entity Framework)