DataContext.ExecuteQuery 를 사용할 때 읽기 전용 클래스 속성을 무시하십시오.

StackOverflow https://stackoverflow.com/questions/707706

문제

결과 세트를 개체에 바인딩 할 때 특정 속성 또는 모든 판독 특성을 무시하기 위해 LINQ 데이터 컨텍스트를 어떻게 알리나요?

LINQ를 사용하여 표현하기 어려운 일부 T-SQL 문으로 작업 중이므로 데이터 컨텍스트의 ExecuteQuery 메소드를 사용하여 직선 T-SQL을 데이터베이스로 전달합니다.

내 클래스 T에 Readonly 속성이있는 경우 데이터 컨텍스트가 해당 속성을 설정하려고 시도하고 Setter 속성이 없기 때문에 실패 할 때 런타임에 예외가 나타납니다. 해당 속성을 무시하기 위해 컨텍스트를 어떻게 말합니까?

이것이 제가 지금하고있는 일입니다. 작동하지만 짜증이납니다.

public bool IsPaidInFull {
    get { return NetTotal <= 0m; }
    set { /* needed so linq doesn't choke. Should never be set by hand */ }
}
도움이 되었습니까?

해결책

엔티티에 LINQ를 고려 했습니까? 당신이 얼마나 멀리 떨어져 있는지, 또는 당신이 편한 오버 헤드가 얼마나 많은지에 따라 프로젝트를 변환하는 것은 어려운 일이 아닙니다. 그러나이 정확한 시나리오는 LINQ에서 엔티티에 문제가되지 않습니다. 로드 할 때 객체의 읽기 전용 속성을 업데이트하려고 시도하지 않습니다. 명시 적으로 매핑되지 않기 때문에 단순히 확장 속성입니다.

또한 속성 대신 Getter 기능을 사용하여 구식/Java 경로를 사용할 수 있습니다. public bool getispaidinfull () {return nettotal <= 0m;}.

또는 상속 된 아동 클래스에서 읽기 전용 속성을 구현하는 데 놀 수 있지만 모든 종류의 유형 문제를 도입 할 수 있습니다.

다른 팁

public bool IsPaidInFull
{
    get { return NetTotal <= 0m; }
    private set { ;}
}
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top