C# 使用一对多列表Entityframwork 5更新实体
我首先使用entity framework 5代码。 我创建了一个包含一个集合的实体。 我尝试了所有方法,但没有找到如何更新此实体C# 使用一对多列表Entityframwork 5更新实体,c#,sql-server,entity-framework,ef-code-first,C#,Sql Server,Entity Framework,Ef Code First,我首先使用entity framework 5代码。 我创建了一个包含一个集合的实体。 我尝试了所有方法,但没有找到如何更新此实体 public class TaskExtention { public TaskExtention() { RequiredFeatures = new HashSet<FeatureTaskRequirment>(); } [Key] [Datab
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();
}
}
请帮助我了解如何更新该实体。如果该实体在数据库中不存在,则应使用Add方法而不是Attach。附加用于数据库中但不属于上下文一部分的实体。
详细信息请阅读。您是否遇到异常或其他情况?它似乎可以工作,但实体并没有在数据库中更新吗?您确定GetByExternalID()没有返回null吗?是的,没有更新。看起来好像什么都不做。你确定GetByExternalId正在返回一个实体吗?如果在附加后设置RequiredFeatures,会发生什么情况?
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();
}
}