2011-05-26 51 views
0

在下面的例子實體框架有時不加載數據

using (var context = new MyEntities() 
{  
    // Delete old data. 
    foreach (var data obsoleteData) 
    { 
    context.DeleteObject(data); 
    } 

    // Create new data. 
    var data = new DataEntity(); 

    // Initialize data 
    // ... 

    var id = FoundItem(); 
    var items = new List<MyItems>(); 
    foreach (var n in context.Sources) 
    { 
    var subItems = (from i in context.Entities1 
        from g in i.Entity1Relations 
        where g.Type == 0 && g.Id == id 
        select i).ToList(); 

    Contract.Assert((from i in subItems 
      where i.SomeCount == 0 select i).FirstOrDefault() == null); 
    items.add(FindSource(n, subItems); 
    } 

    foreach(var i1 in items) 
    { 
    data.SubItems.Add(i1); 
    } 

    context.SaveChanges(); 
} 

這有時斷言,但數據庫SomeCount總是> 0!

Entity1Relations是解決m:n的表。

我假設實體框架不會每次都查詢數據庫。

是否可以解決此問題?

+0

你可以發佈你的模型,並描述你在做什麼?例如。什麼是'obsoleteData',它來自哪裏?你在'Initialize data'部分做了什麼?除此之外,您的命名約定對幫助理解('Entities1','Entity1Relations'?)沒有太大幫助。 – Yakimych 2011-05-26 19:43:47

+0

這是一個簡化的例子。我使用標準生成的實體(來自VS2010中生成的數據庫)。 – 2011-05-26 19:56:47

+0

太好了。正如我在之前的評論中提到的 - 如果你展示你的模型並澄清你想要做的事情,它可能會有所幫助。 – Yakimych 2011-05-26 20:13:36

回答

0

我發現FindSource中的一個錯誤修改了其他對象的SomeCount屬性。所以它與EF無關。