2012-08-30 12 views
3

기본값이있는 Null 허용 필드가 많은 기존 데이터베이스에 대해 EF (v5)를 사용하고 있습니다.엔티티 프레임 워크 및 null 가능 필드

새 엔터티를 삽입 할 때 null 가능 필드에 값이 지정되지 않은 경우 null이 삽입됩니다 (데이터베이스 기본값은 사용되지 않음). 그것은 EF가 실제로 null인지 아닌지를 결정할 수 없다는 점에서 의미가 있습니다.

그러나 필드를 StoreGeneratedPattern = Computed으로 설정하면 삽입시 기본값이 사용되지만 인 경우은 기본값을 사용합니다. 내 자신의 가치를 (심지어 Update에) 제공한다면, 그 값은 무시 될 것 같습니다.

기본 데이터베이스를 변경하지 않고이 시나리오를 사용할 수있는 방법이 있습니까?

프로세스의 예 I는 다음 해요 :이 경우

var myEntity = databaseSession.MyEntities.Single(x => x.EntityID = 123); 
myEntity.SomeField = 1; 
databaseSession.SaveChanges(); 

SomeField 유형 int?이며, I는 SQL 쿼리가 실행되는 것을 볼 수 있습니다 EFProf를 사용 StoreGeneratedPattern = Computed

로 설정 :

update [dbo].[MyEntities] 
set @p = 0 
where ([EntityID] = 123 /* @0 */) 

추가 :

는 업데이트 문이 테이블의 모든 필드를 업데이트가 생성되도록합니다하지만 결정적으로, 그것은 StoreGeneratedPattern = Computed

+0

EF 버전은 무엇입니까? – msarchet

+0

@msarchet - v5.0 – ChadT

+0

값을 업데이트하고 db – msarchet

답변

1

로 설정되어있는 필드를 포함하지 않습니다 그것은 열이 진짜로 의미하지 않는 계산 나의 이해입니다 수동으로 설정하십시오.

그게 효과가 있다면 엔티티의 기본 생성자에서 속성을 기본값으로 설정하기 만하면됩니다. 그것은 그곳에있는 것이므로 SaveChanges를 호출하기 전에 그 값을 볼 수 있다는 추가적인 장점이 있습니다.

업데이트 :Relevant suggestion.