shl*_*jmi 4 .net c# entity-framework exception-handling
这是我的代码:
public class JobsRepository:BaseNewsletterRepository
{
public IEnumerable<Job> GetJobs()
{
var jobs = Newsletterctx.Jobs.Include("Info").OrderBy(o => o.JobID);
return jobs.AsEnumerable();
}
}
public class BusinessNewsletter
{
public static IEnumerable<Job> GetJobs()
{
using (JobsRepository jobsRepository = new JobsRepository())
{
return jobsRepository.GetJobs();
}
}
}
rptJobs.DataSource = BusinessNewsletter.GetJobs();
rptJobs.DataBind();
Run Code Online (Sandbox Code Playgroud)
当我尝试绑定时,我得到错误:
ObjectContext实例已被释放,不能再用于需要连接的操作.
是唯一的解决方案,在BusinessNewsletter类中转换和返回List吗?
public static IList<Job> GetJobs()
{
IList<Job> job;
using (JobsRepository jobsRepository = new JobsRepository())
{
job = jobsRepository.GetJobs().ToList();
}
return job;
}
Run Code Online (Sandbox Code Playgroud)
另一个相关问题:
如何在不指定特定类型的情况下检索数据并将数据绑定到转发器(List<type>
或IEnumerable<type>
)
如果我返回如下特定对象,我需要它:
var specificJob = from job in Newsletterctx.Jobs.Include("Info")
select new
{
ID = job.JobID,
EmailId = job.Info.PreparedEmailID
};
Run Code Online (Sandbox Code Playgroud)
我必须为该对象创建特定的类?
是的,您必须在返回之前转换为一些内存中的集合.问题是返回的结果序列是延迟评估的,因此在数据源尝试枚举结果之前不会尝试查询数据库.此时ObjectContext
已经处理好了.
对于第二个问题,您应该创建自己的类,因为您无法从声明它们的方法返回匿名类型.
归档时间: |
|
查看次数: |
6488 次 |
最近记录: |