2011-06-14 3 views
1

다음과 같은 기본 클래스가 있습니다. 내 모든 엔티티 내가 새로운 엔티티가 데이터베이스에 추가 될 때 CreationDate을 설정하려면이Entity Framework 4.1 컨텍스트에서 새 엔터티 식별

public abstract Entity 
{ 
    public DataTime CreationDate{get;set;} 
    public DataTime ModifiedDate{get;set;} 
} 

에서 상속합니다.

메서드를 오버라이드하고 EntityState을 확인하면 ModifiedDate을 설정할 수있는 Modified 상태입니다.

EntityState을 검사하여 새로운 엔티티인지 여부를 식별 할 수없는 문제는 새로운 엔티티 및 기타로드 된 엔티티가 Added 상태에 있기 때문입니다.

새 엔티티를 구별 할 수있는 방법이 있습니까?

미리 감사드립니다.

답변

1

로드 된 항목은 항상 Unchanged 상태입니다. 새로 추가 된 항목이 Added이고 상태가 변경된 항목이 Modified이고 항목이 Deleted 인 항목이 삭제되었습니다. 다른 행동을 보게되면 잘못된 것이거나 EF를 잘못 사용하게됩니다. Btw. 당신의 생성 과정에 의해 간단하게 수행 할 수 있습니다 CreationDate 설정, 정말 오랜 시간이 걸릴하지 않는 : 내가 생성 날짜에 현재 날짜/시간을 ChangeTracker.Entries()의 항목을 통과하고 할당하여이 문제를 해결했다

public Entity() 
{ 
    CreationDate = DateTime.Now; 
} 
0

곳 CreationDate - 속성이 null입니다. 예 :

public override int SaveChanges() 
{ 
    DateTime saveTime = DateTime.Now; 
    foreach (var entry in this.ChangeTracker.Entries()) 
    { 
    if (entry.Entity is Entity) 
    { 
     if (entry.Property("CreationDate").CurrentValue == null) 
     entry.Property("CreationDate").CurrentValue = saveTime; 
     entry.Property("ModifiedDate").CurrentValue = saveTime; 

    } 
    } 
    return base.SaveChanges(); 
} 
관련 문제