c# – 使用ADO.NET实体框架时出错

我想将列表转换为EntityCollection.

List<T> x = methodcall();
EntityCOllection<T> y = new EntityCollection<T>();

foreach(T t in x)
  y.Add(t);

我收到这个错误.

The object could not be added to the
EntityCollection or EntityReference.
An object that is attached to an
ObjectContext cannot be added to an
EntityCollection or EntityReference
that is not associated with a source
object.

有人知道这个错误吗?

最佳答案 听起来x是ObjectContext查询的结果.每个ObjectContext都跟踪它从数据库中读取的实体以启用更新方案.它跟踪实体以了解何时(或是否)修改它们以及修改哪些属性.

术语是实体附加到ObjectContext.在您的情况下,x中的实体仍然附加到实现它们的ObjectContext,因此您无法同时将它们添加到另一个EntityCollection.

如果你第一次分离它们,你可能会这样做,但如果你这样做,第一个ObjectContext就会停止跟踪它们.如果您再也不想更新这些项目,这不是问题,但如果您以后需要更新它们,则必须再次附加它们.

点赞