【发布时间】:2014-03-31 22:11:38
【问题描述】:
我首先使用实体框架 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();
}
}
请帮助我了解如何更新实体。
【问题讨论】:
-
您是否遇到异常或其他情况?它似乎有效,但实体没有在数据库中更新?您确定 GetByExternalID() 不返回 null 吗?
-
是的,没有更新。看起来它什么都不做。
-
您确定 GetByExternalId 正在返回一个实体吗?如果在附加后设置 RequiredFeatures 会发生什么?
标签: c# sql-server entity-framework ef-code-first