【发布时间】:2014-06-21 20:45:12
【问题描述】:
我首先使用 EF 6 代码来管理我的数据库。我有一个这样的任务类
public class Task{
public Guid Id { get; set; }
public ICollection<Timeframe> Timeframes { get; set; }
}
还有一个看起来像的 Timeframe 类
public class Timeframe{
public Guid Id { get; set; }
public ICollection<Task> Tasks { get; set; }
}
这创建了正确的多对多表结构。我的应用程序工作流程是这样的,任务和时间范围都将在任务/时间范围关系被保存之前存在。一旦建立关系,我就无法让关系持续存在。我知道,当您将实体设置为 EntityState.Modified 时,不会考虑这些关系,并且您实际上必须修改集合才能使关系持续存在。我正在使用以下代码将 task.Timeframes 集合更新为我认为可行的附加 Timeframes
public void SaveTask(Task task)
{
entities.Tasks.Attach(task);
var timeframes = new List<Timeframe>();
foreach (var tf in task.Timeframes)
{
entities.Timeframes.Attach(tf);
timeframes.Add(tf);
}
entities.Entry(task).State = EntityState.Modified;
task.Timeframes.Clear();
timeframes.ForEach(t =>
{
task.Timeframes.Add(t);
});
entities.ChangeTracker.DetectChanges();
entities.SaveChanges();
}
但我的关系仍然没有持续下去。我寻找了一个关系管理器,通过它我可以手动设置要添加的关系,但如果它存在于 EF6 中,我不知道如何获取它。我做错了什么让我的关系无法持久?
【问题讨论】:
标签: entity-framework ef-code-first