Создал простенькую объектную модель с продуктами и категориями:
public class Product
{
public int Id { get; set; }
public string Name { get; set; }
public virtual Category Category { get; set; }
}
public class Category
{
public int Id { get; set; }
public string Name { get; set; }
}
VS помогла сгенирировать контролер с использованием odata ProductController, он содержит метод для обновления данных:
// PUT odata/Product(5)
public IHttpActionResult Put([FromODataUri] int key, Product product)
{
if (!ModelState.IsValid)
{
return BadRequest(ModelState);
}
if (key != product.Id)
{
return BadRequest();
}
db.Entry(product).State = EntityState.Modified;
try
{
db.SaveChanges();
}
catch (DbUpdateConcurrencyException)
{
if (!ProductExists(key))
{
return NotFound();
}
else
{
throw;
}
}
return Updated(product);
}
В этот метод приходит объект Product с измененными Category и Name,
но в итоге в базе в таблице Product Name изменяется, а Category_Id нет, без каких-либо ошибок.