C# web服务中的ObjectDisposedException
我正在做一个网络服务项目,我有一个问题,我似乎无法解决。我认为这与延迟加载和我的using语句有关 这是我的密码:C# web服务中的ObjectDisposedException,c#,.net,web-services,exception-handling,C#,.net,Web Services,Exception Handling,我正在做一个网络服务项目,我有一个问题,我似乎无法解决。我认为这与延迟加载和我的using语句有关 这是我的密码: public List<MediumRole> MediumGetParticipants(int mediumId, int itemsPrPage, int page) { Medium medium = MediaHelper.GetMedium(mediumId); // Check if media not is null if (m
public List<MediumRole> MediumGetParticipants(int mediumId, int itemsPrPage, int page)
{
Medium medium = MediaHelper.GetMedium(mediumId);
// Check if media not is null
if (medium == null) return null;
return medium.MediumRoles.Page(page, itemsPrPage).ToList();
}
public List MediumGetParticipants(int-mediumId、int-itemsrpage、int-page)
{
Medium Medium=mediaheloper.GetMedium(mediumId);
//检查介质是否为空
if(medium==null)返回null;
返回medium.MediumRoles.Page(Page,itemsrpage.ToList();
}
我听到一个例外的说法
System.ObjectDisposedException:ObjectContext实例已被释放,不能再用于需要连接的操作。
有人吗
据我所知,
Medium
类具有对MediumRoles
集合的延迟加载代理引用
由于mediaheloper.getmedia(mediumId)
方法处理引用了media
的数据库上下文而导致异常
要解决此问题,可以执行以下操作:
public static List<MediumRole> MediumGetParticipants(int mediumId, int itemsPrPage, int page)
{
Medium medium = MediaHelper.GetMedium(mediumId);
// Check if media not is null
if (medium == null) return null;
using (var context = new DbContext())
{
context.Attach(medium);
return medium.MediumRoles.Page(page, itemsPrPage).ToList();
}
}
publicstaticlist-MediumGetParticipants(int-mediumId、int-itemsrpage、int-page)
{
Medium Medium=mediaheloper.GetMedium(mediumId);
//检查介质是否为空
if(medium==null)返回null;
使用(var context=new DbContext())
{
上下文。附加(中等);
返回medium.MediumRoles.Page(Page,itemsrpage.ToList();
}
}
我猜您使用了实体框架,启用了延迟加载(这是默认设置),并在GetMedium
方法中处理了EF的ObjectContext
。当您访问MediumRoles
属性时,EF希望延迟加载集合,但它不能,因为ObjectContext
已被释放。要解决此问题,您可以更改代码,以便在调用ToList
后释放上下文,或者在GetMedium
方法中急切地加载MediumRoles
集合。您的using语句在哪里?您需要添加更多代码(GetMedium等)以获得答案