我首先使用实体框架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();
}
}
请帮助我了解如何更新实体。
答案 0 :(得分:0)
如果实体在数据库中已经存在,那么您应该使用Add方法而不是Attach。 Attach与数据库中的实体一起使用,但不是上下文的一部分。 请阅读this了解详细信息。