Entityframework 모델에서 유형/테이블 "ElementToComponentMapping"에 연결된 형식/테이블 "ModelElement"가 있습니다. 내비게이션/외래 키는 "ModelID"및 "ElementNo"입니다.EntityFramework/LINQ - 연결된 테이블/형식에서 필터링 된 콘텐츠 가져 오기
ModelElement 인스턴스에 연결된 ElementToComponentMapping의 내용도 포함되어있는 특정 필터링 조건을 기반으로 ModelElement의 인스턴스를 반환하는 메서드를 작성해야합니다. 문제는 필자가 ElementToComponentMapping에서 반환 한 것을 필터링해야한다는 것입니다. 즉, 사용할 수없는 것처럼 보입니다. 포함 포함
이렇게 포함되지 않습니다. 포함/내 두 번째 시도는 별도로 관련 "ElementToComponentMappings"을 조회 한 후, 먼저 주 "ModelElement"개체를 쿼리, 그리고 설정
public ModelElement GetModelElement(int modelID, int modelElementNo, int version)
{
return (from c in context.ModelElements.Include("ElementToComponentMapping")
where c.ModelID == modelID && c.ElementNo == modelElementNo
&& c.ElementToComponentMappings.Where(m => m.version == version)
select c).FirstOrDefault();
}
where 절에서 탐색 유형 그 "ModelElement"
의 속성으로public ModelElement GetModelElement(int modelID, int modelElementNo, int version)
{
ModelElement newElement = (from c in context.ModelElements
where c.ModelID == modelID && c.ElementNo == modelElementNo
select c).FirstOrDefault();
newElement.ElementToComponentMappings =
(from m in context.ElementToComponentMappings
where m.ModelID == modelID
&& m.ElementNo == modelElementNo
&& m.version == version
select m).FirstOrDefault();
return newElement;
}
하지만 이것도 "ElementToComponentMappings"개체를 직접 쿼리하여 반환 된 형식이 "ModelElement"개체의 "ElementToComponentMappings"속성과 다릅니다.
이것은 간단한 조작처럼 보입니다 - 외래 키 연결된 테이블의 값을 얻습니다. 여기서 FK 테이블의 내용에서 어떤 것을 필터링 할 수 있습니까?
입력 해 주셔서 감사합니다. 아쉽게도 아직 없습니다. 첫 번째 제안에서 newElement.ElementToComponentMappings 속성은 어디에 설정됩니까? 두 번째 제안에서 ElementToComponentMappings에 FirstOrDefault에 대한 정의가 포함되어 있지 않고 가장 좋은 확장 메서드 오버로드에 잘못된 인수가 있다는 오류가 발생합니다. 유형 차이에 관해서는, 당신은 바로 ElementToComponentMappings가 콜렉션이라는 것입니다. 그것은 어떤 점에서 대신 ToList를 호출해야한다는 것을 의미합니까? –
첫 번째 경우에는 트릭입니다. 모든 것이 올바르게 구성 되었다면 해당 속성을 설정할 필요가 없습니다. 자동으로 채워 져야합니다. 두 번째 경우에는 이상합니다. 'CreateSourceQuery'는'IQueryable'의 구현 인'ObjectQuery'를 리턴하고'FirstOrDefault'를 제공합니다. 'ToList'를 사용하는 방법은 엔티티가 프록시되지 않은 경우에만 작동합니다. 그렇지 않으면 새 컬렉션을 탐색 속성에 할당 할 수 없다는 오류가 발생합니다. 유용한 팁, 요령 및 통찰력을 얻으려면 –
+1. 결국 나는이 접근법을 작동시킬 수 없었고, 다른 방식으로도 그렇게했습니다. –