2014-11-05 4 views
0

를 반환하는 특정 값을 선택하여 나 자신 나는 LINQ 쿼리에 SQL 쿼리를 변환 만

var queryTest = context.db_accounts_last_contacts.SqlQuery(@"SELECT follow_up_date, MAX(last_contact_date) AS last_contact_date 
FROM db_accounts_last_contacts p 
GROUP BY p.account_id"); 

을 시도

SELECT follow_up_date, MAX(last_contact_date) AS last_contact_date 
FROM db_accounts_last_contacts p 
GROUP BY p.account_id 

SQL 쿼리가 있지만 나는이 오류가 발생합니다.

The data reader is incompatible with the specified 'dbModel.db_accounts_last_contacts'. A member of the type, 'id', does not have a corresponding column in the data reader with the same name. 

난, 난 그냥 당신이 액세스하려는 생각이 두 개의 열

+2

해당 SQL 쿼리가 작동합니까? group by 절에서 follow_up_date를 집계 함수에 없으므로 필요가 없습니까? – juharr

답변

2

를 꺼내 싶습니다 어쩌면 선 아래로 나중에 갱신이 테이블로 모든 정보를 꺼내 싶지 않아 DB 테이블은 테이블 자체와 함께 사용됩니다. 이고 p 변수 앞에 "AS"가 없습니다. 다음을 시도해보십시오.

var queryTest = context.ExecuteSqlCommand(@"SELECT follow_up_date, MAX(last_contact_date) AS ast_contact_date 
             FROM db_accounts_last_contacts AS p 
             GROUP BY p.account_id, follow_up_date, ast_contact_date "); 

어떻게 진행되는지 알려주세요.

P. EntityFramework를 사용하여 SQL'ish에서 C# pov로 뷰 포인트를 변환하는 것이 좋습니다. 이는 일반적으로 이해하기 쉽습니다.

+0

나는보기를 만들었지 만 엔티티 프레임 워크는 이제 "기본 키가 없습니다"라고 불평합니다. 기본보기가 기본보기로 설정되어있는 방법은 내보기입니다 "select'p'.'account_id' AS ' AS 'last_contact_date','p'.'id''''''''''''scommique'''''''''''''''''''''''''로''' p' group by'p'.'account_id' "또한 컨텍스트 – Canvas

+0

에서 SqlQuery를 호출 할 수 없습니다. @juharr이 질문에 대한 설명에서 먼저 Group By 절에서 follow_up_date를 가져야한다고 말했습니다. SELECT의 모든 요소는에 의해 그룹화되어야합니다. 둘째, 테이블에 기본 키를 설정하지 않는 것이 좋지 않은 습관입니다. 셋째, 엔터티 프레임 워크가 기본 키로 열을 사용하도록하려면 ISNULL을 사용합니다. – Noxymon

+0

글쎄,보기를 사용하여 내 이유는 내가 전에 좋은 느낌이 사용하지 않은 이유는 그것을 똑딱 것입니다 위의보기를 사용하여 내 문제를 해결했습니다. :) – Canvas