entityframeworkMappingException:Type'XXXhasbeenmappedmultipletimes我在Web应用程序中使用实体框架。每个请求创建ObjectContext(使用HttpContext),特此代码:stringocKey="ocm_"+HttpContext.Current.GetHashCode().ToString();如果(!HttpContext.Current.Items.Contains(ocKey)){HttpContext.Current.Items.Add(ocKey,newElevationEntityModel(EFConnectionString));}_eem=HttpContext.Current.Items[ocKey]作为ElevationEntityModel;不是每次,但有时我有这个异常:用户代码未处理System.Data.MappingExceptionMessage=Type'XXX'hasbeenmappedmorethanonceonce.Source=System.Data.Entity我完全糊涂了,我不知道是什么导致了这个问题。谁能帮我?它看起来像一个同步问题。一个简单的解决方案是有一个共享锁对象(在你的类中):privatestaticobject_lock=newobject();然后你的代码变成:stringocKey="ocm_"+HttpContext.Current.GetHashCode().ToString();锁(_lock){如果(!HttpContext.Current.Items.Contains(ocKey)){HttpContext.Current.Items.Add(ocKey,newElevationEntityModel(EFConnectionString));}_eem=HttpContext.Current.Items[ocKey]作为ElevationEntityModel;锁定块基本上意味着一旦线程进入“锁定”块,在第一个线程完成之前,其他线程不能访问该块。这将停止“包含”方法和“添加”方法之间的竞争。注意:如果您的应用程序中的其他任何地方正在访问HttpContext.Current中的Items集合,您也需要在那里进行同步。明智的做法是创建自定义集合,将其添加到Items集合并同步对此集合的访问。这是因为当你在多线程的时候访问同一个ObjectContext,没有先同步线程。。。以上是C#学习教程:entityframeworkMappingException:Type'XXXhasbeenmappedmultipletimes如果对大家有用就分享一下吧以及需要了解更多C#学习教程,希望大家多多关注-本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
