【发布时间】:2010-09-28 05:08:31
【问题描述】:
首先,让我列出我想做的事情。假设我有EntityObject、MetaData、Data1 和Data2 三种类型。正如人们所期望的那样,MetaData 引用了Data1 和Data2 中的每一个实例。现在,对于每个MetaData,我可以计算出一个value。
到目前为止很简单。现在,我想让用户玩转Data1 和Data2 的各种组合,看看他们能得到什么values。这显然需要创建MetaData 的实例。现在,如果我不想用MetaData 的所有这些条目来混淆数据库,那么我想在内存上下文中创建实体对象而不调用SaveChanges() 将其写回数据库.但是,这会带来一个问题,即每当我尝试访问内存中 MetaData 的 Data1 和 Data2 引用时,都会遇到以下异常:
InvalidOperationException 未处理
当相关对象处于添加状态或分离状态并且最初不是使用 NoTracking 合并选项检索时,无法返回此 EntityCollection 或 EntityReference 的源查询。
如果我按照建议进行操作,并将对象“提交”到 DB,我最终会遇到混乱问题。
总之,有罪的代码看起来像这样:
MetaData temp = MetaData.CreateMetaData(0);
MetaData.Data1 = <existing Data1 from context>;
MetaData.Data2 = <existing Data2 from context>;
//Exception here
if (!MetaData.Data1Reference.isLoaded)
MetaData.Data1Reference.Load();
this guy 似乎也有类似的问题。
【问题讨论】:
标签: c# entity-framework