컴퓨터/C#
[Error] ASP.NET Entity Framework 관련 에러 (feat. 민간요법 같은 해결 방안)
호마
2019. 12. 2. 23:37
ASP.NET 4.5 + EntityFramework 조합으로 사용 중에 DB 스키마 변경 없이 DB만 Mssql -> Mysql 으로 변경하던 중 발생한 에러입니다.
1. 이 함수는 네 맘대로 쓸 수 없다.
Error : 이 메서드는 LINQ to Entities 인프라를 지원하며 코드에서 직접 사용할 수 없습니다.
Solution : Enumerable.AsQueryable() 제거해줌, 아예 못쓰는건 아닌데 없어도 큰 문제는 없어서 일단 제거, 나중에 필요할 때 찾아보기로
2. DB 연결을 닫지 않고 계속 열기만 하면 나중에 후회하게 될거야
Error : Entity Framework: There is already an open DataReader associated with this Command which must be closed first
Solution : 소스코드나 쿼리문 안에서 내부적으로 db를 두번 호출하는 것 같음. 혹은 ToList()를 하는지 확인하기. 이번에는 join 후 from 하도록 수정, 아래 참조
//before [ERROR!]
from program in v_ProgramInfoRepository.Entities
.Select(p => new { p.ProgramID, p.Title } )
.Where(p => vod.ProgramId == p.ProgramID).DefaultIfEmpty()
// after [Pass]
join program in v_ProgramInfoRepository.Entities
.Select(p => new { p.ProgramID, p.Title })
on vod.ProgramId equals program.ProgramID into lj_program
from program in lj_program.DefaultIfEmpty()