c# - EntityFramework trying to insert unchanged attached entity -
i have model this:
public class parent {     public childa childa { get; set;}     public childb childb { get; set;} }   in cache store collection of such objects statistics. when i'm trying save collection, error childa cannot added violation primary key constaint.
            icollection<metric> statistics = this.cacheservice.get<icollection<metric>>(statisticscachekey);             if (statistics.any())             {                 foreach (parent parent in statistics)                 {                     this.dataservice.attach<childa>(parent.childa);                     this.dataservice.attach<childb>(parent.childb);                      this.parentrepository.create(parent);                 }                  await this.dataservice.savechangesasync();                 statistics.clear();                 this.cacheservice.put<icollection<parent>>(statisticscachekey, statistics);             }   childa exists in database , attached context, don't why ef trying insert it. attach method looks this
public void attach<t>(t entity)         t : class, ientity     {         entitystate state = context.entry<t>(entity).state;         if (state == entitystate.detached)         {             ienumerable<t> local = (ienumerable<t>)context.set<t>().local;             bool alreadyatcontext = local.contains(entity, new entitycomparer());             if (!alreadyatcontext)             {                 context.set<t>().attach(entity);             }         }     } }       
 
  
Comments
Post a Comment