【发布时间】:2013-05-31 21:00:04
【问题描述】:
asp.net mvc 4、实体框架 5、SQL Server 2012 Express
我有一个 Place 模型:
public virtual int PlaceID { get; set; }
public virtual ICollection<Tag> Tags { get; set; }
public virtual string Name { get; set; }
以及相关的Tag模型:
public virtual int TagID { get; set; }
public virtual string Name { get; set; }
public virtual string NamePlural { get; set; }
public virtual ICollection<Place> Places { get; set; }
多对多关系。
有一个与以下 ViewModel 关联的视图。在其中我可以编辑地点详细信息 - 并编辑与该地点相关联的标签(例如,该地点可能有一个“餐厅”标签和一个“酒吧”标签 - 也许我想添加一个“咖啡馆”标签,并且删除“餐厅”标签)。
PlacesWithTagsViewModel:
public Place place { get; set; }
public ICollection<Tag> SelectedTags { get; set; }
当视图返回控制器时,我会像这样更新标签:
place.Tags = SelectedTags
db.Entry(ptvm.place).State = EntityState.Modified;
db.SaveChanges();
但是,位置属性会更新(例如名称) - 但标签始终保持不变。
如何更新标签?
【问题讨论】:
-
我遇到了同样的问题。最后,我强制先删除所有子实体,然后将新实体添加到父实体。如果您想要这种方法,请告诉我给您发送示例
标签: asp.net asp.net-mvc entity-framework asp.net-mvc-4 entity-framework-5