我正在使用Entity框架学习MVC4。今天我弄清楚如何更新联结表,现在我对linq的使用有点困惑。通常我会用以下语句更新我的数据库。
db.Entity.Add(EntityViewModel);
db.SaveChanges();
但是当我更新联结表时
Entity EntityAttached = db.Entity.Where(x=> x.Id == EntityViewModle.Id).First();
EntityViewModle.anotherEntities = EntityAttached.anotherEntities;
EntityViewModle.anotherEntities.Clear(); EntityViewModle.anotherEntities.Add(anotherEntity);
db.Entry(EntityAttached).CurrentValues.SetValues(EntityViewModle);
db.SaveChanges();
它运行正常,但我并没有真正得到db.Entry()。CurrentValues.SetValues()部分。请解释我为什么我不能使用.add()并保存。或者无论如何直接将数据输入到联结表?或者更简单的方式,而不是上面描述的?
答案 0 :(得分:0)
看起来此代码更新了现有实体。如果您使用Add,那么您将从数据库中获取新ID。