컴퓨터/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()