c# - An entity object cannot be referenced by multiple instances of IEntityChangeTracker even though I detached it -
c# - An entity object cannot be referenced by multiple instances of IEntityChangeTracker even though I detached it -
i'm using ef. save entities cache.
i detach each entity before putting cache,
and attaching new objectcontext after getting cache.
i'm using using
statement @ high point (in bl class, upon every request)
yet error:
system.invalidoperationexception: entity object cannot referenced multiple instances of ientitychangetracker. @ system.data.objects.objectcontext.verifycontextforaddorattach(ientitywrapper wrappedentity) @ system.data.objects.objectcontext.attachsingleobject(ientitywrapper wrappedentity, entityset entityset, string argumentname) @ system.data.objects.objectcontext.attachto(string entitysetname, object entity) @ system.data.entity.internal.linq.internalset`1.actonset(action action, entitystate newstate, object entity, string methodname) @ system.data.entity.internal.linq.internalset`1.attach(object entity) @ system.data.entity.dbset`1.attach(tentity entity) @ conduit.mam.clientservice.dal.mamdata.mamdatarepository.getmamdata(string stamp, mamdbentities mamdbentities) in d:\builds\tfs\9\221\sources\server\clientservices\dev\clientservice 1.3\servicedal\mamdata\mamdatarepository.cs:line 56 @ conduit.mam.clientservice.bll.mamdatamanager.getmamdata() in d:\builds\tfs\9\221\sources\server\clientservices\dev\clientservice 1.3\conduit.mam.clientservice.bll\mamdatamanager.cs:line 57 @ conduit.mam.clientservice.bll.appsdatamanager.getclientrelevantsapps(list`1 appsdata) in d:\builds\tfs\9\221\sources\server\clientservices\dev\clientservice 1.3\conduit.mam.clientservice.bll\appsdatamanager.cs:line 107 @ conduit.mam.clientservice.service.controllers.clientdatacontroller.getappsdata() in d:\builds\tfs\9\221\sources\server\clientservices\dev\clientservice 1.3\conduit.mam.clientservice.service\controllers\clientdatacontroller.cs:line 58
here detach + attach code: using
inject objectcontext here:
public static grouping getmamdata(string stamp, mamdbentities mamdbentities) { grouping group = mamdatacachemanager.getmamdata(stamp); if (group == null) { //was not found in cache //check aveilable test status 'start' - 1 grouping = getgroupsfromdb(stamp, mamdbentities); if (group != null) { mamdbentities.entry(group).state = entitystate.detached; mamdatacachemanager.insertmamdata(stamp, group); } } //option b: attache new context if (mamdbentities.entry(group).state == entitystate.detached) { mamdbentities.groups.attach(group); } homecoming group; }
the first time (getting fresh entity db cache):
the entity detached , attached same contextobjec.
the sec time (getting entity cache),
it's attached new contextobject.
do have additional step? detach missing anything?
detach affects specific object passed method. if object beingness detached has related objects in object context, objects not detached.
c# asp.net asp.net-mvc entity-framework caching
Comments
Post a Comment