【发布时间】:2014-07-28 03:39:48
【问题描述】:
我在存储库中有一个简单的查询,如下所示:
public List<MeetingVM> GetMeetingsInRadius(decimal latitude, decimal longitude, int miles, int dayOfWeek)
{
var point = DbGeography.FromText(string.Format("POINT ({0} {1})", longitude, latitude), 4326);
using (MeetingContext db = new MeetingContext())
{
var results = (from a in db.Meetings
where a.Geography.Distance(point) * 0.000621371 <= miles
&& a.DayOfWeek == (Meetings.Models.Enums.DayOfWeek)dayOfWeek
select a).Select(x => new MeetingVM
{
Address = x.Address,
CasoID = x.Address,
DayOfWeek = x.DayOfWeek,
distance = x.Geography.Distance(point) * 0.000621371,
Latitude = x.Latitude,
LocationName = x.LocationName,
Longitude = x.Longitude,
MeetingName = x.MeetingName,
MeetingType = x.MeetingType,
Options = x.Options,
Time = x.Time
}).OrderBy(x => x.Time).ToList();
return results;
}
}
我尝试将其更改为返回 IQueryable<> 而不是 List<> ,我理解它的作用,成为一个惰性查询,并且在实际调用之前不执行。但我不明白为什么它会抛出异常
“DbContext 已被释放”
当我将其更改为 IQueryable<> 时,我唯一的选择是在存储库中设置 DbContext 的私有实例并使其保持打开状态吗?
【问题讨论】:
标签: c# asp.net-mvc entity-framework