如果Person
是模型的一部分,Person
有Address
隨後還Address
集合(如相關實體)是模型的一部分(除非你從模型中排除的地址集合明確地)。這意味着你可以簡單地將地址設置添加到的DbContext作爲輔助屬性:
public class MyContext : DbContext
{
public DbSet<Person> People { get; set; }
public DbSet<Address> Addresses { get; set; }
}
對於UpdateAdress
然後你可以使用:
public void UpdateAddress(Address addr)
{
using (var context = new MyContext())
{
var addressInDb = context.Addresses.Find(addr.Id);
context.Entry(addressInDb).CurrentValues.SetValues(addr);
context.SaveChanges();
}
}
即使你不想或不能添加一個Addresses
DbSet到上下文可以使用上下文的Set<T>()
方法(只要T是一個模型實體 - 並且Address
應該是一個):
public void UpdateAddress(Address addr)
{
using (var context = new MyContext())
{
var addressInDb = context.Set<Address>().Find(addr.Id);
context.Entry(addressInDb).CurrentValues.SetValues(addr);
context.SaveChanges();
}
}
的Addre ss對象應該有一個PersonId屬性,不是嗎? – sternr
是的,它確實有一個PersonId – soundslike
如果你只想更新一個特定的Address對象,那麼你只需要將它傳遞給WCF,並且記得相應地設置它的PersonId屬性 – sternr