2016-07-25 1 views
-1

fallowing 속성은 POCO 클래스에 정의됩니다.먼저 ASP.Net MVC 코드를 작성하십시오. 힘은 단지 attrubute가 DB에 저장되는 방법?

public int total { get{ return sub_total_1 + sub_total_2; }} 

새 마이그레이션을 추가하면이 특성이 만들어지지 않으며 테이블에 저장되지 않습니다.

[Column ("Total")] 주석을 추가하지 않고 추가하려고했습니다.

이 특성을 향후 쿼리를위한 "캐시"로 db에 저장할 수 있습니까?

감사합니다.

답변

1

EF가 속성을 모니터링 할 수 있으려면 public (1) getter 및 setter가 있어야합니다.

당신이하고있는 것과 같은 것을 위해, 거기서 어떤 작업을 위해서 데이터베이스에 그것을 필요로하지 않는다면, Poco 클래스의 읽기 전용 속성으로 남겨 두는 것이 좋습니다. 두 개의 정수를 더하는 작업은 성능상의 문제가 아니며 데이터베이스에서 밀거나 당기는 속도가 더 느립니다.

(1) 데이터베이스를 제외하고는 "읽기 전용"으로 설정하려는 경우 설정자는 protected internal 일 수 있습니다. 새로운 private total 변수는 데이터베이스에 무엇을 저장합니다,이 예에서

private int? total; 
public int Total 
{ 
    get 
    { 
     return total ?? sub_total_1 + sub_total_2; 
    } 
    protected internal set 
    { 
     total = value; 
    } 
} 

: 캐싱 목적을 위해 데이터베이스에 가치 저장 작업을 수행하는 방법의 예로서

, 당신은 이런 식으로 뭔가를 할 수 . 데이터베이스에서 검색되지 않으면 기본값은 sub_total_1sub_total_2의 합계가되도록 null 허용입니다. 하위 속성이 데이터베이스에서 검색된 후에 업데이트 된 경우이 체크를 둘러싼 또 다른 방법을 찾을 수 있습니다.하지만이 작업은 현재 수행중인 작업에 대한 좋은 시작입니다.

+0

두 정수의 합은 간단한 예입니다. 이 경우 작업은 좀 더 복잡합니다. 그래서 캐시를하고 싶습니다. –

+0

그러나 db 연산은 여기 계산 된 것보다 느립니다. –

+1

직접적인 예제를 제공 할 수 있다면 도움이 될 것입니다. 그러나'public get','protected internal set'은 아마도 여러분이 찾고있는 것일 것입니다. – krillgar