如何替换Entity Frameworks POCO对象上的现有集合

时间:2012-06-15 16:55:50

标签: entity-framework entity-framework-4

假设我创建了一个新实体并按如下方式保存:

UserReport report = new UserReport() {//set the props}
manager.SaveUserReport(report)

Public UserReport SaveUserReport(UserReport report)
{
  using(var context = new ReportDatabase())
  {
    context.UserReports.AdObject(report);
    context.SaveChanges();
  }
  return report;
}

到目前为止一切顺利

然后我读回保存的报告

 savedReport = manager.GetUserReports(new int[] {report.Id}).FirstOrDefault();

 Public List<UserReport> GetUserReports(IEnumerable<int> reportIds)
 {
     using (var context = new ReportDatabase())
     {
        var reports = from UserReport in context.UserReports
          where reportIds.Contains(userReport.Id)
          select userReport;
          return visibleReports.ToList();
     }
 }

savedReport现在是一个附加的UserReport

UserReport对象附有一列Columns。

我想替换附加了另一组(已存在于数据库中)的Columns集。

 savedReport.Columns = newColumnCollection

此操作失败,并且无法设置类型UserReport_etc'上的“属性列”,因为集合已设置为EntityCollection“

我看过这个article:问题是一样的,但是我不能使用那个解决方案。

解决这个问题的正确方法是什么?

1 个答案:

答案 0 :(得分:0)

好的 - 看起来只是将非导航属性设置为不是虚拟的情况。

这是一个奇怪的情况,因为被修改的行为属于虚拟的属性。