【发布时间】:2011-04-05 19:58:30
【问题描述】:
我正在使用 EntityFramework 来持久化我的实体。
我遇到的问题是,当通过 WCF 发送在 Silverlight 中构建的实体以进行持久化时,我收到错误“无法从类型为“CarterShop.Commerce.Entities.ManufacturedItemRequirement[]”的固定大小数组中删除项目.
我正在插入一个具有 ManufacturedItemRequirements 的 ICollection 的实体 (ManufacturedItem)。实体框架应该允许我将它作为 POCO 对象“添加”到 DbContext 并将其持久化,但由于某种原因它抱怨集合。
以前有人遇到过这个问题吗?基本上我不知道它在抱怨什么。错误来自 System.Data 内部:
at System.Data.Objects.Internal.PocoPropertyAccessorStrategy.CollectionRemove(RelatedEnd relatedEnd, Object value)
at System.Data.Objects.Internal.EntityWrapper`1.CollectionRemove(RelatedEnd relatedEnd, Object value)
at System.Data.Objects.DataClasses.EntityCollection`1.RemoveFromObjectCache(IEntityWrapper wrappedEntity)
at System.Data.Objects.ObjectStateManager.DegradePromotedRelationships()
at System.Data.Objects.DataClasses.RelationshipManager.AddRelatedEntitiesToObjectStateManager(Boolean doAttach)
at System.Data.Objects.ObjectContext.AddObject(String entitySetName, Object entity)
at System.Data.Entity.Internal.Linq.InternalSet`1.<>c__DisplayClass5.<Add>b__4()
at System.Data.Entity.Internal.Linq.InternalSet`1.ActOnSet(Action action, EntityState newState, Object entity, String methodName)
at System.Data.Entity.Internal.Linq.InternalSet`1.Add(Object entity)
at System.Data.Entity.DbSet`1.Add(TEntity entity)
at Commerce.Model.Repositories.RepositoryBase`1.Add(T entity) in C:\OclProjects 4.1\CarterShop\CarterShop.Commerce.Model\Repositories\RepositoryBase.cs:line 28
at CarterShop.Commerce.Services.Implementation.StockItemService.CreateManufacturedItem(ManufacturedItem manufactedItem, Boolean createDefinitionAswell) in C:\OclProjects 4.1\CarterShop\CarterShop.Commerce.Services\Implementation\StockItemService.cs:line 137
我基本上在做:
ManufacturedItem item = new ManufacturedItem();
item.ManufacturedItemRequirements.Add(new ManufacturedItemRequirement() { Quantity = 1; DefinitionId = 5 });
// Send to WCF...
Context.ManufacturedItems.Add(item); // Error thrown here.
Context.SaveChanges();
【问题讨论】:
-
您添加的项目是否与其他项目有关系?看起来添加意味着从另一个集合中删除。
-
它应该是一个全新的项目。添加描述。
-
服务器端反序列化后item的
ManufactureItemRequirement集合是什么类型? -
它是一个数组,这就是为什么不能从中删除东西的原因,它是只读的。但我不明白为什么 EF 试图删除它?如果我能断点 System.Data.Objects...
标签: .net silverlight wcf entity-framework