我目前正在使用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);
但它不起作用。
答案 0 :(得分:2)
不要将整个实体存储在Session中,只需使用ID并在下一页上检索它。拥抱网络的无国籍状态有助于保持理智。
如果必须存储整个实体,请保留Detach,但是当您开始新操作时,请记住将其附加到新的ObjectContext。