Я использую ASP.NET MVC4 Web API, и мой PUT действие, я хочу сделать что-то вроде этого:Могу ли я назначить объект объекту объекта?
public void Put(string id, [FromBody]Foo value)
{
var context = new FooBarEntities();
Foo existingFoo = context.Foos.Where(x => x.Id == id).First();
existingFoo = value;
context.SaveChanges();
}
Но изменения в Foo value
объекта не сохраняются. Если бы я сделать каждое свойство, она будет работать, как это:
public void Put(string id, [FromBody]Foo value)
{
var context = new FooBarEntities();
Foo existingFoo = context.Foos.Where(x => x.Id == id).First();
existingFoo.Prop1 = value.Prop1;
existingFoo.Prop2 = value.Prop2;
context.SaveChanges();
}
Есть ли способ, что я могу обновляться каждое свойство, только назначая объект?
Возможный дубликат [Что эквивалентно ObjectContext.ApplyCurrentValues для DbContext] (http://stackoverflow.com/questions/5807622/what-is-the-equivalent-of-objectcontext-applycurrentvalues-for-dbcontext). Отмечено как дубликат, потому что он содержит ответ на ваш вопрос, но я могу представить, что вы не знали об этом. Не волнуйтесь, дубликаты не являются преступлением. –
@ GertArnold может быть. Я думаю [этот вопрос/ответ] (http://stackoverflow.com/questions/623672/update-entity-framework-objects/4212581#4212581), что Майкл Харен, связанный ниже, является более близким дубликатом, с ответом. – xdumaine
Не связано с вашим вопросом: '.Where (x => ...). First()' обычно можно заменить на '.First (x => ...)'. Если должен быть только один, тогда '.Single (x => ...)' будет еще лучше. Если должно быть 0 или 1, я бы использовал 'SingleOrDefault (x => ...)' и проверить значение null. –