使用一对多列表实体框架5更新实体

时间:2014-03-31 22:11:38

标签: c# sql-server entity-framework ef-code-first

我首先使用实体​​框架5代码。 我创建一个包含一个集合的实体。 我尝试了所有,但我没有找到如何更新此实体。

public class TaskExtention
{
        public TaskExtention()
        {
            RequiredFeatures = new HashSet<FeatureTaskRequirment>();
        }

        [Key]
        [DatabaseGenerated(DatabaseGeneratedOption.Identity)] 
        public int Id { get; set; }

        public int ExternalSystemId { get; set; }

        public ICollection<FeatureTaskRequirment> RequiredFeatures { get; set; }

        public override bool Equals(object obj)
        {
            var other = obj as TaskExtention;
            if (other == null)
            {
                return false;
            }

            return Id == other.Id;
        }

        public override int GetHashCode()
        {
            return Id.GetHashCode();
        }
}

我的最后一次尝试:

using (var db = GetContext())
{
     TaskExtention currTask = GetByExternalID(ExternalID);
     if (currTask != null)
     {
        currTask.RequiredFeatures = FeatuersToUpdate;
        db.TaskExtentions.Attach(currTask);
        db.Entry(currTask).State = EntityState.Modified;
        db.SaveChanges();
     }
}

请帮助我了解如何更新实体。

1 个答案:

答案 0 :(得分:0)

如果实体在数据库中已经存在,那么您应该使用Add方法而不是Attach。 Attach与数据库中的实体一起使用,但不是上下文的一部分。 请阅读this了解详细信息。