如何替换实体框架 POCO 对象上的现有集合



假设我创建了一个新实体并将其保存如下:

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.Columns = newColumnCollection

此操作失败,并显示错误"无法设置类型 UserReport_etc 上的属性列",因为集合已设置为 EntityCollection"

我看过这篇文章:问题是一样的,但我不能使用该解决方案。

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

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

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

最新更新