【发布时间】:2013-03-11 18:13:08
【问题描述】:
我有一段代码可以在 Application_Start 上运行,用于将演示数据播种到我的数据库中,但我收到一个异常消息:
ObjectContext 实例已被释放,不能再用于需要连接的操作
在尝试枚举我的一个实体时 DB.ENTITY.SELECT(x => x.Id == value);
我已经检查了我的代码,并且在我的操作之前我没有处理我的上下文,下面是我当前实现的概要:
protected void Application_Start()
{
SeedDemoData();
}
public static void SeedDemoData()
{
using(var context = new DBContext())
{
// my code is run here.
}
}
所以我想知道Application_Start 是否超时并强制我的数据库上下文在完成之前关闭其连接。
注意:我知道代码是因为我在不同的地方使用它,而且它已经过单元测试,在那里它可以正常工作。
对这里可能出现的问题有任何想法吗?还是我错过了什么?
【问题讨论】:
-
该错误通常意味着您正在访问从 EF 获取的对象中的某些延迟加载属性,该对象位于上下文被处理的位置。您确定您的 SeedDemoData 函数引发了异常吗?
-
您是否尝试将
ToList()添加到SeedDemoData()内的查询中,以确保在释放上下文之前调用您的查询? -
是的,异常来自我的 SeedDemoData(),我试图做的是将 DB.ENTITY.SELECT(x => x.Id == value) 移动到第一行执行并且它有效,但是如果在此之前在我的上下文中执行任何其他操作,它会爆炸,还有其他想法吗?
标签: asp.net entity-framework asp.net-mvc-4 global-asax