2012-09-03 15 views
5

निष्पादित नहीं कर सकता है त्रुटि के समाधान के साथ मुझे कोई समस्या है संग्रह संग्रह संशोधित किया गया था, गणना ऑपरेशन निष्पादित नहीं हो सकता है। ऐसा तब होता है जब "लेखक" और "z" एक ही तत्व का सुझाव देते हैं।इकाई फ्रेमवर्क संग्रह संशोधित किया गया था; गणना ऑपरेशन

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Data.Entity; 

namespace ConsoleApplication1 
{ 
public class Nation 
{ 
    public int ID { get; set; } 
    public int name { get; set; } 
    public virtual ICollection<NationAlly> NationAllys { get; set; } 
} 

public class NationAlly 
{ 
    public int ID { get; set; } 
    public int level { get; set; } 
    public Nation Natio { get; set; } 
} 

public class NationsContext : DbContext 
{ 
    public DbSet<Nation> Nations { get; set; } 
    public DbSet<NationAlly> NationAllys { get; set; } 

    protected override void OnModelCreating(DbModelBuilder modelBuilder) 
    { 
     modelBuilder.Entity<Nation>() 
      .HasMany(n => n.NationAllys) 
      .WithRequired() 
      .Map(conf => conf.MapKey("OwnerID")) 
      .WillCascadeOnDelete(false); 

     modelBuilder.Entity<NationAlly>() 
      .HasRequired(a => a.Natio) 
      .WithMany() 
      .Map(conf => conf.MapKey("UserID")) 
      .WillCascadeOnDelete(false); 
    } 
} 


class Program 
{ 



    static void Main(string[] args) 
    { 
     using (var context = new NationsContext()) 
     { 

      // We have three Nations and two Allies 
      Nation nation1 = new Nation() 
      { 
       name = 1 
      }; 
      Nation nation2 = new Nation() 
      { 
       name = 2 
      }; 
      Nation nation3 = new Nation() 
      { 
       name = 3 
      }; 



      context.Nations.Add(nation1); 
      context.Nations.Add(nation2); 
      context.Nations.Add(nation3); 

      context.SaveChanges(); 

     } 



     using (var context = new NationsContext()) 
     { 
      Nation z = (from x in context.Nations 
         where x.name == 1 
         select x).FirstOrDefault(); 


      Nation author = (from x in context.Nations 
          where x.name == 1 
          select x).ToList().FirstOrDefault(); 

      NationAlly ally1 = new NationAlly() 
      { 
       Natio = author 
      }; 

      // toNation of ally1 refers to Nation2 
      // ally1.User = author; 


      if (z.NationAllys != null) 
      { 
       z.NationAllys.Add(ally1); 
      } 
      else 
      { 
       z.NationAllys = new List<NationAlly>(); 
       z.NationAllys.Add(ally1); 
      } 




      context.SaveChanges(); 




     } 
    } 


} 

} 

मैं इकाई की रूपरेखा पर कोड का परीक्षण किया 4.1 और 5

उत्तर

4

यह काम करता है अगर आप संदर्भ के लिए ally1 जोड़ने immedately के बाद आप इसे बना लिया है:

//... 
NationAlly ally1 = new NationAlly() 
{ 
    Natio = author 
}; 
context.NationAllys.Add(ally1); 
//... 

समस्या के लिए है अपने विशेष मामले में आपके परिपत्र संदर्भ के साथ करें ...

z -> z.NationAllys में ally1 -> ally1 लेखक को संदर्भित करता है = Z

... और संभावना को इससे संबंधित है:

EF 4.1 and "Collection was modified; enumeration operation may not execute." exception

मैं वास्तव में यह व्याख्या नहीं कर सकते, लेकिन यह के रूप में अपने कोड के बिना काम करना चाहिए मेरे लिए एक एफई बग की तरह दिखता है समस्या का।

+0

हाँ से बचने के लिए आपको कुछ संदर्भों में शून्य असाइन करना चाहिए! धन्यवाद। मेरी समस्या स्वयं-संदर्भ प्रकार भी थी, जहां मैं ईएफ को इंगित करने की कोशिश कर रहा था कि स्पष्ट रूप से दोनों तरीकों का संदर्भ था। बच्चे को हटाने के बाद-> मूल संदर्भ, यह ठीक काम किया! –

-1

समस्या आपके पास परिपत्र संदर्भ के साथ है। चक्रीय

संबंधित मुद्दे

 संबंधित मुद्दे