2012-07-16 37 views
0

我想盡可能部分地使用上下文,因爲我想我的軟件被多個用戶使用,我已經有上下文整合的問題......所以我在做的是調用上下文這樣的:再次與多個IEntityChangeTracker接口實例

entityManager = new EntityManager(); 

IEnumerable<customers_question_set> customersQuestionSets = 
entityManager.GetTradersCustomersQuestionSets(trader.id).ToArray<customers_question_set>(); 

entityManager = null; 

這樣,我相信,不僅我關閉一切與= NULL也受到.ToArray分離從上下文對象()。

但現在我試圖添加新的項目到數據庫,我遇到了一個問題。這是我的行動:在GetMentor11()traders.AddObject(商)

private void button1_Click(object sender, EventArgs e) 
    { 
     trader trader = new trader(); 
     trader.companies.Add(parent.GetCompany()); 
     trader.login = textBox1.Text; 
     trader.password_hash = Hasher.ToSha256Hash(textBox2.Text); 

     EntityManager entityManager = new EntityManager(); 
     entityManager.SaveTrader(trader); 
     entityManager = null; 

     this.RefreshLists(); 
    } 

public class EntityManager 
{ 

    private mentor11Entities Mentor11Entities = new mentor11Entities(); 

    private mentor11Entities GetMentor11() 
    { 
     return this.Mentor11Entities; 
    } 

    public void SaveTrader(trader trader) 
    { 
     GetMentor11().traders.AddObject(trader); 
     GetMentor11().AcceptAllChanges(); 
     GetMentor11().SaveChanges(); 
    } 

[...] 

} 

錯誤發生 - 如何卸下它,如果它是一個新的成員,我甚至沒有從任何地方走?

回答

0

由於有很多人有這個問題,並在互聯網上有沒有簡單的(對於我的初學者)解釋我可以找到...我將分享我如何解決我的問題。

  1. 我使EntityManager畢竟是靜態的。

  2. 我發現「StoreWins」刷新類型(它確保輸出始終作爲服務器)

所以它看起來像這樣和精細工作:

public static void SaveTrader(trader trader) 
    { 
     Mentor11Entities.Refresh(System.Data.Objects.RefreshMode.StoreWins, Mentor11Entities.traders); 
     GetMentor11().AddTotraders(trader); 
     GetMentor11().SaveChanges(); 
     GetMentor11().AcceptAllChanges(); 
     Mentor11Entities.Refresh(System.Data.Objects.RefreshMode.StoreWins, Mentor11Entities.traders); 
    } 
相關問題