쿼리 결과를 두 번 이상 열거할 수 없습니다.
엔티티 프레임워크(ef)를 사용하고 있는데 다음 오류가 발생합니다.
"쿼리 결과를 두 번 이상 열거할 수 없습니다."
ef 데이터 컨텍스트가 포함된 리포지토리 클래스가 있습니다.그런 다음 저장소의 인스턴스를 포함하는 컨트롤러 클래스가 있습니다(MVC 컨트롤러와 혼동하지 마십시오).아직까지는...컨트롤러에 검색 방법이 있는데, 이 방법은 다음의 배열을 반환해야 합니다.RadComboBoxItemData
Telerik RadComboBox 컨트롤을 채우는 데 사용됩니다.
public RadComboBoxItemData[] Search(int id, string searchText)
{
var query = context.Search(id, searchText);
List<RadComboBoxItemData> result = new List<RadComboBoxItemData>();
foreach (var item in query)
{
RadComboBoxItemData itemData = new RadComboBoxItemData();
itemData.Text = ""; // assign some text here..;
itemData.Value = ""; /*assign some value here..*/
result.Add(itemData);
}
return result.ToArray();
}
코드를 디버그할 때 각 루프에 들어갈 수 있지만 다음과 같은 오류가 발생합니다.
'System' 유형의 예외입니다.잘못된 작업시스템에서 '예외'가 발생했습니다.Data.Entity.dll이지만 사용자 코드에서 처리되지 않았습니다.
추가 정보:쿼리 결과를 두 번 이상 열거할 수 없습니다.
내 엔티티는 기존 저장 프로시저의 함수 가져오기를 사용합니다.
// EF repository method calling the function imported method on the data context.
public IEnumerable<SearchItem> Search(int id, string searchText)
{
return this.entityContext.Search(id, searchText);
}
함수 가져오기Search
의 컬렉션을 반환하기 위해 저장된 우선 순위를 호출합니다.SearchItem
.
EF에 문제가 생겨 각 루프가 반복되지 않는 느낌이 듭니다.
호출하여 결과를 명시적으로 열거해 보십시오.ToList()
.
바꾸다
foreach (var item in query)
로.
foreach (var item in query.ToList())
교체해 보십시오.
var query = context.Search(id, searchText);
와 함께
var query = context.Search(id, searchText).tolist();
모든 게 잘 될 겁니다
저장 프로시저를 호출하는 데 문제가 있는 코드:
var resultSP = db.StoredProcedure(id);
if (resultSP != null)
{
var count = resultSP.Count();
var list = resultSP.Select(x=>...);
}
고정, 변수에 저장:ToList()
재사용:
var resultSP = db.StoredProcedure(id);
if (resultSP != null)
{
var resultSP_List = resultSP.ToList();
var count = resultSP_List.Count();
var list = resultSP_List.Select(x=>...);
}
만약 당신이 이런 종류의 오류를 얻어서 나는 당신이 보통처럼 proc 데이터를 저장하고 다른 컨트롤들을 바인딩하는 것을 제안합니다. 왜냐하면 나도 이 오류를 얻었기 때문에 나는 이것을 다음과 같이 해결했습니다:-
repeater.DataSource = data.SPBinsReport().Tolist();
repeater.DataBind();
이렇게 해보세요.
언급URL : https://stackoverflow.com/questions/5723555/the-result-of-a-query-cannot-be-enumerated-more-than-once
'programing' 카테고리의 다른 글
연결 문자열에 앰퍼샌드를 포함하는 방법은 무엇입니까? (0) | 2023.06.18 |
---|---|
R에서 객체가 함수로 전송된 후 객체의 이름을 얻는 방법은 무엇입니까? (0) | 2023.06.18 |
ASP.NET MVC용 RadioButtonListFor를 구현한 사람이 있습니까? (0) | 2023.06.13 |
사용자 지정 게시물 유형 슬러그 충돌 (0) | 2023.06.13 |
VBA 워크시트 변경 이벤트 바이패스? (0) | 2023.06.13 |