我正在尝试尽可能地使用上下文,因为我希望我的软件被多个用户使用,而且我已经遇到了上下文集成的问题......所以我正在做的是调用上下文:< / p>
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) - 如果它是一个我从未在任何地方拿过的新成员,如何分离它?
答案 0 :(得分:0)
由于有很多人对此有疑问,并且在互联网上没有简单的(对我来说是初学者)我能找到的解释......我将分享如何解决我的问题。
毕竟我已经将EntityManager设为静态。
我发现“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);
}