从实体中的上下文中分离对象

时间:2009-09-03 20:35:43

标签: c# asp.net entity-framework

我目前正在使用Entity Framework,我遇到了这个问题:

无法定义两个对象之间的关系,因为它们附加到不同的ObjectContext个对象。

对于页面加载序列,我通过此填充dropdownlists

using (DatabaseEntities db = new DatabaseEntities())
        {
            MyDictionary = new Dictionary<Guid, Person>();
            var List= from emp in db.Set select emp;
            ...

            foreach (Employee emp in List)
            {
                MyDictionary.Add(emp.id, emp);

另一个功能是“下一步”按钮,用于关闭此页面并打开另一个页面。

private void StoreInfo()
    {
        Person theLead= MyDictionary[new Guid(this.Lead.SelectedValue)]; 
        ....
        this.Selected.Lead= theLead;

我将字典存储在会话状态

public Dictionary<Guid,Person> MyDictionary
    {
        get
        {
            return Session["MyDictionary"] as Dictionary<Guid,Person>;
        }
        set
        {
            Session["MyDictionary"] = value;
        }
    }

如何从第一个上下文中分离每个人,以便继续页面中的验证?我试过了

db.Detach(emp) 

之前的

MyDictionary.Add(emp.id, emp);

但它不起作用。

1 个答案:

答案 0 :(得分:2)

不要将整个实体存储在Session中,只需使用ID并在下一页上检索它。拥抱网络的无国籍状态有助于保持理智。

如果必须存储整个实体,请保留Detach,但是当您开始新操作时,请记住将其附加到新的ObjectContext。