0

我正在尝试尽可能部分地使用上下文,因为我希望我的软件被多个用户使用并且我已经遇到了上下文集成的问题......所以我正在做的是这样调用上下文:

entityManager = new EntityManager();

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

entityManager = null;

这样,我相信,我不仅用 =null 关闭所有内容,而且还通过 .ToArray() 将对象从上下文中分离出来。

但是现在我正在尝试将新项目添加到数据库中,但遇到了问题。这是我的行动:

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();
    }

[...]

}

错误发生在 GetMentor11().traders.AddObject(trader) - 如果它是我什至没有从任何地方带走的新成员,如何分离它?

4

1 回答 1

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);
    }
于 2012-07-16T23:25:49.927 回答