我有一个旨在更新Monitor Profile的节点和属性的方法:
实体的所有原始类型(ProfileName,DisplayName)都得到了更新。但是,在保存更改时,属性和节点不会被修改。
这是实体本身:
public class NWatchMonProfile
{
public NWatchMonProfile()
{
this.CasAttributes = new HashSet<NWatchAttribute>();
}
[MaxLength(50)]
public string ProfileName { get; set; }
public System.DateTime CreatedDate { get; set; }
[MaxLength(50)]
public string CreatedUser { get; set; }
public Nullable<System.DateTime> EndedDate { get; set; }
[MaxLength(50)]
public string EndedUser { get; set; }
public virtual ICollection<NWatchAttribute> CasAttributes { get; set; }
public virtual ICollection<NWatchNode> Nodes { get; set; }
}
以下是用于尝试更新记录的MVC控制器代码。
var monProfile = new NWatchMonProfile
{
Id = profileId,
ProfileName = profileName,
DisplayName = profileName,
CasAttributes = attributes,
Nodes = nodes
};
monProfile.CreatedDate = DateTime.Now;
monProfile.DisplayName = profileName;
monProfile.ProfileName = profileName;
if (nodes.Count > 0)
{
monProfile.Nodes = nodes;
}
monProfile.CasAttributes = attributes;
var entry = dbContext.Entry(monProfile);
entry.State = EntityState.Modified;
dbContext.SaveChanges();
注意: 我已经验证“attributes”数组包含一个NWatchAttributes列表。 不再推荐使用STE。
答案 0 :(得分:0)
试试这个:
dbContext.Entry(monProfile.Nodes).State = EntityState.Modified;
dbContext.Entry(monProfile.CasAttributes).State = EntityState.Modified;
dbContext.Entry(monProfile).State = EntityState.Modified;
dbContext.SaveChanges();