아래 DAL 메서드에서 Cannot access object: DataContext after it's been disposed
이 표시됩니다. 나는 그곳에 처분하는 것이 좋을 것이라고 생각했다. result
은 IEnumurable
이며 이러한 종류의 문제를 일으킨 것은 IQueryable
이라고 생각했습니다.LINQ Datacontext 처리 문제
내가 뭘 잘못하고 있니? 방법 는이어야합니다. 내 DataContext
을 처분해야합니다. 돌아 오는 것이 더 좋을까요? DataTable
? 이는 SQL에서 가리키는 데스크톱 응용 프로그램입니다 2005
예 방법 ->
public static DataTable GetEnrolledMembers(Guid workerID)
{
var DB = CmoDataContext.Create();
var AllEnrollees = from enrollment in DB.tblCMOEnrollments
where enrollment.CMOSocialWorkerID == workerID || enrollment.CMONurseID == workerID
join supportWorker in DB.tblSupportWorkers on enrollment.EconomicSupportWorkerID
equals supportWorker.SupportWorkerID into workerGroup
from worker in workerGroup.DefaultIfEmpty()
select
new
{
enrollment.ClientID,
enrollment.CMONurseID,
enrollment.CMOSocialWorkerID,
enrollment.EnrollmentDate,
enrollment.DisenrollmentDate,
ESFirstName = worker.FirstName,
ESLastName = worker.LastName,
ESPhone = worker.Phone
};
var result = from enrollee in AllEnrollees.AsEnumerable()
where (enrollee.DisenrollmentDate == null || enrollee.DisenrollmentDate > DateTime.Now)
//let memberName = BLLConnect.MemberName(enrollee.ClientID)
let lastName = BLLConnect.MemberLastName(enrollee.ClientID)
let firstName = BLLConnect.MemberFirstName(enrollee.ClientID)
orderby enrollee.DisenrollmentDate ascending, lastName ascending
select
new
{
enrollee.ClientID,
//MemberName = memberName,
LastName = lastName,
FirstName = firstName,
NurseName = BLLAspnetdb.NurseName(enrollee.CMONurseID),
SocialWorkerName = BLLAspnetdb.SocialWorkerName(enrollee.CMOSocialWorkerID),
enrollee.EnrollmentDate,
enrollee.DisenrollmentDate,
ESWorkerName = enrollee.ESFirstName + " " + enrollee.ESLastName,
enrollee.ESPhone
};
DB.Dispose();
return result.CopyLinqToDataTable();
}
부분 클래스 내가 DataContext를 생성 ->
을
partial class CmoDataContext
{
public static bool IsDisconnectedUser
{
get
{
return Settings.Default.IsDisconnectedUser;
}
}
public static CmoDataContext Create()
{
var cs = IsDisconnectedUser ? Settings.Default.CMOConnectionString : Settings.Default.Central_CMOConnectionString;
return new CmoDataContext(cs);
}
반환이 '사용 중'인 한 나는 괜찮을까요 ?? 감사합니다 –
예; 괜찮아 질거야. ('IEnumerable'을 반환하지 않는다면) – SLaks
호기심 때문에 'IEnumerable'은 여전히 실패 할 것입니다. 그러면 어떻게 돌려 주나요? –