Skip to content

Linking and unlinking entries

object edited this page Oct 11, 2012 · 21 revisions

Simple.Data method Update is used to manage links between entries in OData collections.


Link a product to a category

var category = _db.Categories.Insert(CategoryName: "Test1");
var product = _db.Products.Insert(ProductName: "Test2", UnitPrice: 18m);
_db.Products.UpdateByProductName(ProductName: "Test2", Category: category);
product = _db.Products.FindByProductName("Test2");
Assert.Equal(category.CategoryID, product.CategoryID);
category = _db.Category.WithProducts().FindByCategoryName("Test1");
Assert.True(category.Products.Count == 1);

Request URI: PUT Products(79)/$links/Category
Request content:

<uri xmlns="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata">Categories(10)</uri>

Link a product to a different category

var category = _db.Categories.Insert(CategoryName: "Test1");
var product = _db.Products.Insert(ProductName: "Test2", UnitPrice: 18m, CategoryID : 1);
_db.Products.UpdateByProductName(ProductName: "Test2", Category: category);
product = _db.Products.FindByProductName("Test2");
Assert.Equal(category.CategoryID, product.CategoryID);
category = _db.Category.WithProducts().FindByCategoryName("Test1");
Assert.True(category.Products.Count == 1);

Request URI: PUT Products(80)/$links/Category
Request content:

<uri xmlns="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata">Categories(11)</uri>

Unlink a product from a category

var category = _db.Categories.Insert(CategoryName: "Test6");
var product = _db.Products.Insert(ProductName: "Test7", UnitPrice: 18m, Category: category);
product = _db.Products.FindByProductName("Test7");
_db.Products.UpdateByProductName(ProductName: "Test7", Category: category);
product = _db.Products.FindByProductName("Test7");
Assert.Equal(category.CategoryID, product.CategoryID);
_db.Products.UpdateByProductName(ProductName: "Test7", Category: null);
product = _db.Products.FindByProductName("Test7");
Assert.Null(product.CategoryID);

Request URI: DELETE Products(81)/$links/Category


See also:
Adding entries with links
Updating entries with links
Modifying data
Simple.Data documentation for Update