Partager via


Procédure : ajouter, modifier et supprimer des entités (WCF Data Services)

Avec les bibliothèques clientes Services de données WCF , vous pouvez créer, mettre à jour et supprimer des données d'entité dans un service de données en effectuant des actions équivalentes sur les objets dans DataServiceContext Pour plus d'informations, consultez Mise à jour du service de données (WCF Data Services).

L'exemple dans cette rubrique utilise l'exemple de service de données Northwind et des classes de service de données client générées automatiquement. Ce service et les classes de données clientes sont créés lorsque vous complétez le démarrage rapide WCF Data Services.

Exemple

L'exemple suivant crée une instance de l'objet puis appelle la méthode AddObject sur DataServiceContext pour créer l'élément dans le contexte. Un message HTTP POST est envoyé au service de données lorsque la méthode SaveChanges est appelée.

' Create the DataServiceContext using the service URI.
Dim context = New NorthwindEntities(svcUri)

' Create the new product.
Dim newProduct = _
    Product.CreateProduct(0, "White Tea - loose", False)

' Set property values.
newProduct.QuantityPerUnit = "120gm bags"
newProduct.ReorderLevel = 5
newProduct.UnitPrice = 5.2D

Try
    ' Add the new product to the Products entity set.
    context.AddToProducts(newProduct)

    ' Send the insert to the data service.
    context.SaveChanges()

    Console.WriteLine("New product added with ID {0}.", newProduct.ProductID)
Catch ex As DataServiceRequestException
    Throw New ApplicationException( _
            "An error occurred when saving changes.", ex)
// Create the DataServiceContext using the service URI.
NorthwindEntities context = new NorthwindEntities(svcUri);

// Create the new product.
Product newProduct =
    Product.CreateProduct(0, "White Tea - loose", false);

// Set property values.
newProduct.QuantityPerUnit = "120gm bags";
newProduct.ReorderLevel = 5;
newProduct.UnitPrice = 5.2M;

try
{
    // Add the new product to the Products entity set.
    context.AddToProducts(newProduct);

    // Send the insert to the data service.
    context.SaveChanges();

    Console.WriteLine("New product added with ID {0}.", newProduct.ProductID);
}
catch (DataServiceRequestException ex)
{
    throw new ApplicationException(
        "An error occurred when saving changes.", ex);
}

L'exemple suivant récupère et modifie un objet existant puis appelle la méthode UpdateObject sur DataServiceContext pour marquer l'élément dans le contexte comme mis à jour. Un message HTTP MERGE est envoyé au service de données lorsque la méthode SaveChanges est appelée.

Dim customerId = "ALFKI"

' Create the DataServiceContext using the service URI.
Dim context = New NorthwindEntities(svcUri)

' Get a customer to modify using the supplied ID.
Dim customerToChange = (From customer In context.Customers _
                        Where customer.CustomerID = customerId _
                        Select customer).Single()

' Change some property values.
customerToChange.CompanyName = "Alfreds Futterkiste"
customerToChange.ContactName = "Maria Anders"
customerToChange.ContactTitle = "Sales Representative"

Try
    ' Mark the customer as updated.
    context.UpdateObject(customerToChange)

    ' Send the update to the data service.
    context.SaveChanges()
Catch ex As DataServiceRequestException
    Throw New ApplicationException( _
            "An error occurred when saving changes.", ex)
End Try
string customerId = "ALFKI";

// Create the DataServiceContext using the service URI.
NorthwindEntities context = new NorthwindEntities(svcUri);

// Get a customer to modify using the supplied ID.
var customerToChange = (from customer in context.Customers
                        where customer.CustomerID == customerId
                        select customer).Single();
 
// Change some property values.
customerToChange.CompanyName = "Alfreds Futterkiste";
customerToChange.ContactName = "Maria Anders";
customerToChange.ContactTitle = "Sales Representative";

try
{
    // Mark the customer as updated.
    context.UpdateObject(customerToChange);

    // Send the update to the data service.
    context.SaveChanges();
}
catch (DataServiceRequestException  ex)
{
    throw new ApplicationException(
        "An error occurred when saving changes.", ex);
}

L'exemple suivant appelle la méthode DeleteObject sur DataServiceContext pour marquer l'élément dans le contexte comme supprimé. Un message HTTP DELETE est envoyé au service de données lorsque la méthode SaveChanges est appelée.

' Create the DataServiceContext using the service URI.
Dim context = New NorthwindEntities(svcUri)

Try
    ' Get the product to delete, by product ID.
    Dim deletedProduct = (From product In context.Products _
                          Where product.ProductID = productID _
                          Select product).Single()


    ' Mark the product for deletion.    
    context.DeleteObject(deletedProduct)

    ' Send the delete to the data service.
    context.SaveChanges()

    ' Handle the error that occurs when the delete operation fails,
    ' which can happen when there are entities with existing 
    ' relationships to the product being deleted.
Catch ex As DataServiceRequestException
    Throw New ApplicationException( _
            "An error occurred when saving changes.", ex)
End Try
// Create the DataServiceContext using the service URI.
NorthwindEntities context = new NorthwindEntities(svcUri);

try
{
    // Get the product to delete, by product ID.
    var deletedProduct = (from product in context.Products
                          where product.ProductID == productID
                          select product).Single();

    // Mark the product for deletion.    
    context.DeleteObject(deletedProduct);

    // Send the delete to the data service.
    context.SaveChanges();
}
// Handle the error that occurs when the delete operation fails,
// which can happen when there are entities with existing 
// relationships to the product being deleted.
catch (DataServiceRequestException ex)
{
    throw new ApplicationException(
        "An error occurred when saving changes.", ex);
}

L'exemple suivant crée une nouvelle instance de l'objet puis appelle la méthode AddRelatedObject sur DataServiceContext pour créer l'élément dans le contexte avec le lien vers l'ordre connexe. Un message HTTP POST est envoyé au service de données lorsque la méthode SaveChanges est appelée.

Dim productId = 25
Dim customerId = "ALFKI"

Dim newItem As Order_Detail = Nothing

' Create the DataServiceContext using the service URI.
Dim context = New NorthwindEntities(svcUri)

Try
    ' Get the specific product.
    Dim selectedProduct = (From product In context.Products _
                           Where product.ProductID = productId _
                           Select product).Single()

    ' Get the specific customer.
    Dim cust = (From customer In context.Customers.Expand("Orders") _
                Where customer.CustomerID = customerId _
                Select customer).Single()

    ' Get the first order. 
    Dim order = cust.Orders.FirstOrDefault()

    ' Create a new order detail for the specific product.
    newItem = Order_Detail.CreateOrder_Detail( _
            order.OrderID, selectedProduct.ProductID, 10, 5, 0)

    ' Add the new item with a link to the related order.
    context.AddRelatedObject(order, "Order_Details", newItem)
    
    ' Since the item is now tracked by the context,
    ' set just the link to the related product.
    context.AddLink(selectedProduct, "Order_Details", newItem)

    ' Add the new order detail to the collection, and
    ' set the reference to the product.
    order.Order_Details.Add(newItem)
    newItem.Order = order
    newItem.Product = selectedProduct

    ' Send the inserts to the data service.
    context.SaveChanges()
Catch ex As DataServiceQueryException
    Throw New ApplicationException( _
            "An error occurred when saving changes.", ex)

    ' Handle any errors that may occur during insert, such as 
    ' a constraint violation.
Catch ex As DataServiceRequestException
    Throw New ApplicationException( _
            "An error occurred when saving changes.", ex)
int productId = 25;
string customerId = "ALFKI";

Order_Detail newItem = null;

// Create the DataServiceContext using the service URI.
NorthwindEntities context = new NorthwindEntities(svcUri);

try
{
    // Get the specific product.
    var selectedProduct = (from product in context.Products
                           where product.ProductID == productId
                           select product).Single();

    // Get the specific customer.
    var cust = (from customer in context.Customers.Expand("Orders")
                where customer.CustomerID == customerId
                select customer).Single();

    // Get the first order. 
    Order order = cust.Orders.FirstOrDefault();

    // Create a new order detail for the specific product.
    newItem = Order_Detail.CreateOrder_Detail(
        order.OrderID, selectedProduct.ProductID, 10, 5, 0);

    // Add the new item with a link to the related order.
    context.AddRelatedObject(order, "Order_Details", newItem);
    
    // Since the item is now tracked by the context,
    // set just the link to the related product.
    context.AddLink(selectedProduct, "Order_Details", newItem);

    // Add the new order detail to the collection, and
    // set the reference to the product.
    order.Order_Details.Add(newItem);
    newItem.Order = order;
    newItem.Product = selectedProduct;
   
    // Send the inserts to the data service.
    context.SaveChanges();
}
catch (DataServiceQueryException ex)
{
    throw new ApplicationException(
        "An error occurred when saving changes.", ex);
}

// Handle any errors that may occur during insert, such as 
// a constraint violation.
catch (DataServiceRequestException ex)
{
    throw new ApplicationException(
        "An error occurred when saving changes.", ex);
}

Voir aussi

Tâches

Procédure : joindre une entité existante à DataServiceContext (WCF Data Services)
Procédure : définir des relations d'entité (WCF Data Services)

Concepts

Opérations de traitement par lot (WCF Data Services)

Autres ressources

Bibliothèque cliente de WCF Data Services