2011-03-12 3 views
1

엔티티가 새로운 것인지 확인해야합니다. int/identity 프라이 머리 키라면, 키의 프로퍼티에 디폴트 값이 있는지를 확인할 수 있습니다. 그러나 Guid의 경우에는 이것을 할 수 없습니다. ObjectContext 또는 ObjectStateManager를 사용하여 문제의 엔터티가 새 대 수정 된 개체인지 확인하고 결정할 수있는 작업이 있습니까? 이 널 (NULL)이 아니라면, 대한엔터티가 EF 4.0에서 새 것인지 확인하십시오.

if (entity.MyGuid.HasValue) 
{ 
    // hooray! 
} 

확인 : 그것은 널 (NULL) 가이 드의 경우 가이 드의 경우

+0

그냥 생각 : 그것은 그것을 Guid.Empty와 같이 만들 수 있습니까? 그렇지 않다면 레이어를 체크하여 밑에 무엇이 저장되어 있는지 확인하십시오. – CarneyCode

답변

0

당신은 값이 있는지 확인할 수 있습니다,이

if(foo.GuidProperty == default(Guid)) 
{ 

} 
0

을 수행 할 수 있습니다 디폴트 값 또는 빈 GUID :

if (entity.MyGuid != default(Guid)) 
{ 
    // hooray! 
} 

if (entity.MyGuid != Guid.Empty) 
{ 
    // hooray! 
} 
+0

하지만 ID 열이 아닙니다 (즉, 클라이언트 코드가 Guid PK 값을 지정해야합니다). – Jeff

+0

죄송합니다. 어디로 가는지 잘 모르겠습니다. 예를 들어,이 Guid 속성은 ID 열일 필요는 없습니다. – Kon

2

ObjectStateManager.GetObjectStateEntry

,
using (MyContext context = new MyContext()) 
{ 
    ObjectStateManager objectStateManager = context.ObjectStateManager; 
    EntityState state = objectStateManager.GetObjectStateEntry(obj).State; 
} 
+0

하지만 새로운 프록시가 아닌 POCO 엔티티라면 아직 ObjectStateManager에 없을 것입니다 ... – Jeff

관련 문제