검색 페이지에 기능을 추가하려고합니다. 기본적으로 특정 조건이 참일 경우 (다른 테이블과의 조인을 기반으로) CSS 클래스를 적용하십시오. 여기 내 (간체) 모델입니다 : LINQ를 사용왼쪽 결합을 전송할 수 없습니다.
MyTable
int Key
string Someinfo1
string Someinfo2
string CssClass
SomeTable
int Key
string CssClass
, 나는 두 개의 테이블을 조인하고 SearchResult.CssClass = SomeTable.CssClass
을 지정하고 싶습니다. 실제로이 할당에 사용되는 논리가 있습니다. 오류
The entity or complex type 'MyTable' cannot be constructed in a LINQ to Entities query.
을 제공
var test = db.MyTable
.GroupJoin(db.SomeTable,
m => m.Key,
s => s.Key,
(m, s) => new {m, s})
.SelectMany(x => x.h.DefaultIfEmpty(),
(x, y) => new MyTable
{
Key = x.m.Key,
Someinfo1 = x.m.Someinfo1,
Someinfo2 = x.m.Someinfo2,
CssClass = y.CssClass
}
이 코드 나누기, 단순히 다음 익명 형식 (x, y) => new
를 만드는 주조 (x, y) => new MyTable
을 변경하면 일이 내가 그들에 기대하는 방법을 작동합니다. 하지만 현재 존재하는 뷰와 호환되도록 MyTable
이라는 형식을 지정해야합니다. 그렇지 않으면 잘 작동 할 때 왜 캐스팅을 시도 할 때 깨지나요? 사실 이후에 주조하는 것도 효과가 없습니다. 미리 감사드립니다
편집 : MyTable
은 CssClass
을 제외하고 데이터베이스 테이블에 매핑됩니다. 나는 MyTable.CssClass
의 원하는 값은 SomeTable
에서 오는 요소
modelBuilder.Entity<MyTable>().Ignore(m => m.CssClass);
을 무시 EF를 구성했습니다.
DefaultIfEmpty()는 모든 항목을 MyTable
에 포함시키는 데 사용됩니다. 이 키가 MyTable
에 존재하는 경우가 존재하지만 오류가 말한다 것처럼
이 문제를 읽는 데 문제가 있습니다. 두 테이블을 그룹 조인하여 테이블 중 하나의 객체로 다시 투영하려는 것은 사용자의 의도입니까? 왜냐하면 당신은'db.MyTable'을 쿼리하고 나서'MyTable' 타입의 객체를 선택하기 때문입니다. – IronMan84
또한'x.h.DefaultIfEmpty'는 무엇입니까? 'h '가 그것과 무엇을 관계가 있습니까? – IronMan84
질문의 맨 아래에 몇 가지 정보를 추가했습니다. 희망은 도움이된다 – Jeff