2012-07-16 61 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); 
    } 
相关问题