EF 6.1更新记录 - 无法更新关系属性

时间:2015-04-27 20:31:22

标签: asp.net-mvc entity-framework

我有一个旨在更新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。

1 个答案:

答案 0 :(得分:0)

试试这个:

dbContext.Entry(monProfile.Nodes).State = EntityState.Modified;
dbContext.Entry(monProfile.CasAttributes).State = EntityState.Modified;
dbContext.Entry(monProfile).State = EntityState.Modified;

dbContext.SaveChanges();