2012-09-08 1 views
1

3 개의 정수 열 (column1, column2 및 column3)이있는 "MyTable"이라는 SQL Server 테이블이 있습니다. 3 열은 평가, 식 계산 된 열입니다 :LINQ 및 계산 열 : 해당 값이 업데이트되는 시점은 언제입니까?

case 
when column1>column2 then 1 
else 2 
end 

이의 내 표 값을 하나의 행이 있다고 가정 해 봅시다 (300, 50, 1) 이제

나는 다음과 같은 LINQ 코드가 있다고 가정 :

MyTable t = db.MyTables.First(); 
t.column1=5; 
Console.Write("Computed Value = " + t.comlumn3); 
db.SubmitChanges(); 

출력 내용은 무엇입니까? 1 또는 2? 즉, "Submit Changes"전에도 계산 된 열의 값이 내 코드에서 자동 업데이트됩니다.

미리 감사드립니다.

답변

0

아니요, 계산 된 열은 데이터베이스에 의해서만 평가됩니다 (예 : 저장/다시로드 한 후에 올바른 값만 나타납니다).

코드에서 즉시 평가하고 데이터베이스에 저장된 계산 된 열을 원하지 않으면 데이터 형식의 column3을 getter의 값을 계산하는 속성으로 변경할 수 있습니다. 당신이 EF를 사용하는 경우

[NotMapped] 
public int column3 { get { return column1>column2 ? 1 : 2 } } 

, 당신은 데이터베이스에 저장하려고 EF을 피하기 위해 추가 된 속성에 [NotMapped]을 추가 할 수 있습니다.

+0

고맙습니다. 친구. – Wonder