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
Créez un projet d'application console et ajoutez des références à System.Data.Entity et System.Runtime.Serialization.
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).
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="
Data Source=serverName;
Initial Catalog=RegionalCustomersMEST;
Integrated Security=True;
multipleactiveresultsets=true""
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
Créez une instance de type CustomerWest et initialisez les propriétés CustomerId, Name et TotalPurchases du client.
Créez une instance de type OrderWest et initialisez les propriétés de la commande.
Assignez le client créé à l'étape 1 à la nouvelle commande.
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.
Créez une autre instance OrderWest nommée newOrder.
Créez un ObjectParameter à utiliser dans une requête pour le client créée à l'étape 1.
Exécutez la requête pour rechercher le client.
Mettez à jour la propriété TotalPurchases du client en ajoutant la propriété newOrderTotalAmount au TotalPurchases du client.
Assignez le client au newOrder.
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)