2014-03-04 3 views
1

원시 SQL 쿼리를 실행하고 계산 된 열을 반환해야합니다. 쿼리는 POCO 클래스의 속성과 일치합니다. DB를 상대로 실행하지만 계산 된 열이 null계산 된 열이있는 DbContext의 원시 SQL

public class PocoClass 
{ 
    public int ID { get; set; } 

    [NotMapped] 
    public DateTime? CalculatedDate { get; set; } 
} 

쿼리 가짜 코드 (실제 쿼리 더 복잡한)를 반환 할 때 쿼리가 잘 실행 :

string sql = @"SELECT ID, max(date) as CalculatedDate 
       from randomtable 
       where ID = 1 
       group by ID 
       order by CalculatedDate"; 

var result = db.Database.SqlQuery<PocoClass>(sql).ToList(); 
내가 "CalcluatedDate로"허용 것이다 사용하여 생각

해당 필드가 포함되지만 결과는 작동하지 않습니다.

무엇이 누락 되었습니까?

+0

쿼리를 실행 한 후 결과에 포함 할 수 있습니까? –

+0

@Rafa, ID가 정확합니다. CalulatedDate는 모든 행에 대해 null을 반환합니다. DB 자체에 대해 쿼리를 실행하면 CalculatedDate 필드가 정확합니다. – apierceSO

+0

"NotMapped"속성은 어떻습니까? 그것을 제거하려고 했습니까? –

답변

0

코드 첫째을 사용하여 CalculatedDate 필드로 DatabaseGenerated 속성을 추가하려고하면 : 첫 번째 데이터베이스를 사용하는 경우

[DatabaseGenerated(DatabaseGeneratedOption.Computed)] 
public DateTime? CalculatedDate { get; set; } 

, 당신은 모델 (.edmx 파일을 열고 디자이너에서 클래스를 생성 한), 해당 엔티티의 열로 이동하십시오. 그런 다음 속성에서 StoreGeneratedPattern을 Computed로 설정 한 다음 모델을 다시 생성하십시오.

+0

그냥 시도했지만 행운이 없습니다. – apierceSO

+0

strike 내 코멘트 ...이 작동하지만 열을 피하기 위해 노력하고있어 데이터베이스에 추가됩니다 (즉, 단순히 "NotMapped"제거한 경우 다르게 수행하는 확실하지 않은 – apierceSO

+1

이 방법은 작동합니다 (DB와는 반대로) 코드를 먼저 작성하십시오. DB를 먼저 사용하고 디자이너에서 클래스를 생성 한 경우 모델 (.edmx 파일)을 열어 해당 엔터티의 열로 이동하십시오 그런 다음 속성에서 StoreGeneratedPattern을 Computed로 설정 한 다음 모델을 다시 생성하십시오. – CJBS

관련 문제