Попробуйте что-то вроде этого (псевдокод, возможно, я неправильно запомнил некоторые имена методов):
public void Update(Customer entity)
{
using (MyContext ctx = new MyContext())
{
// Create a stub entity and attach it
Customer db = new Customer {ID = entity.ID};
ctx.Customers.Attach(db); // ctx.AttachTo("Customers", db) in 3.5 sp1
// ApplyPropertyChanges in 3.5 Sp1
ctx.ApplyCurrentValues(entity);
ctx.SaveChanges();
}
...
}
В этом коде используется трюк Stub Entity . Возможно, если у вас есть отношения, вам нужно рассказать EF больше об исходной сущности, ознакомьтесь с сообщением в блоге выше, чтобы узнать больше, потому что вы можете сделать это, используя заглушки.
В качестве альтернативы, если вас совсем не волнует параллелизм, вы можете просто сделать это:
public void Update(Customer entity)
{
using (MyContext ctx = new MyContext())
{
// pull the entity from the database
Customer db = ctx.Customers.First(c => c.ID == entity.ID);
// ApplyPropertyChanges in 3.5 Sp1
ctx.ApplyCurrentValues(entity);
ctx.SaveChanges();
}
}
Надеюсь, это поможет
Алекс Джеймс
Советы по Entity Framework