Самый простой способ обновить сущность - извлечь ее по идентификатору, переписать все свойства и вызвать SaveChanges()
:
public Hero SaveHero(Hero hero)
{
using (WarEntities model = new WarEntities())
{
Hero dbHero = model.Heroes.FirstOrDefault(h => h.Id == hero.Id);
if (dbHero != null)
{
dbHero.Name = hero.Name;
dbHero.OtherProperties = hero.OtherProperties;
...
model.SaveChanges();
return dbHero;
}
else
{
model.Heroes.AddObject(hero);
model.SaveChanges();
return hero;
}
}
Однако вы можете избежать извлечения сущности из БД, прикрепивобъект POCO и изменение его состояния на Modified
:
public Hero SaveHero(Hero hero)
{
using (WarEntities model = new WarEntities())
{
model.Heroes.Attach(hero);
var heroEntry = model.ObjectStateManager.GetObjectStateEntry(hero);
heroEntry.ChangeState(EntityState.Modified);
model.SaveChanges();
return hero;
}
Обратите внимание, что этот метод будет работать, только если у вас уже есть этот «герой» в БД и вы обновляете существующую запись.Вам понадобится отдельный метод для добавления нового «героя».