현재 엔티티 프레임 워크 모델 디자이너를 사용하여 오브젝트 모델 및 지속성 계층이 빌드 된 응용 프로그램을 개발 중입니다.엔티티에 사용자 정의 비 맵핑 특성 구현
내가 가진 요구 사항 중 하나는 "더티"상태 (변경됨), 상태 변경이 발생할 때, 가장 중요한 경우 연결이 끊어진 상태에서 작업 할 때마다 알려줄 수있는 상태를 내 엔터티에 제공하는 것입니다 방법. 그래서 IsDirty
부울 속성을 추가 할 T4 템플릿을 수정하기 시작했습니다. IsDirty
이 변경 될 때마다 발생하는 이벤트가 추가되었고 모든 스칼라 속성의 xxxChanged 메서드에 this.IsDirty = true
이 추가되었습니다. 엔티티가 문맥에 연결 만 부착 할 때 속성이 변경 될 때마다, 따라서 false
에 IsDirty
값을 변경하지 않을 경우
모든 것이 잘 작동, 나는이 예외가 나타날 수
속성을 'IsDirty 사용' 엔터티 개체에 유효한 엔터티 매핑이 없습니다. 자세한 내용은 Entity Framework 설명서를 참조하십시오.
여기서 내가 뭘 잘못하고 있니? 개체가 "활성"일 때만 중요한 개체 상태이므로이 속성을 내 데이터베이스에 매핑하지 않으려합니다. IsDirty
속성을 꾸미는데 사용해야하는 속성이 있습니까? 아니면 EntityObject를 파생시키고 상태 메커니즘을 구현해야합니까? 아니면 이것을 구현하는 방법에 대한 더 나은 조언이 있습니까?
감사합니다.
편집 : EDM 디자이너와 함께 Entity Framework 4.0을 사용하고 있습니다.
private bool isDirty;
public event EventHandler DirtyStatusChanged;
public bool IsDirty
{
get
{
return this.isDirty;
}
internal set
{
if (this.isDirty != value)
{
ReportPropertyChanging("IsDirty");
this.isDirty = value;
ReportPropertyChanged("IsDirty");
ReportDirtyStatusChanged();
}
}
}
protected void ReportDirtyStatusChanged()
{
var handler = this.DirtyStatusChanged;
if(handler != null)
{
handler(this, EventArgs.Empty);
}
}
http://stackoverflow.com/questions/3595404/how-not-persist-property-ef4-code-first의 가능한 중복 [NotMapped] –
을 사용해보세요. NotMapped는 코드 우선으로 만 작동합니다. 나는 모델 퍼스트에 EDM 디자이너를 사용하고 있습니다. – Ucodia
임 확실히 당신이 T4를 수정하고 (분명히 EF4.1 +) 작동해야 생성 된 엔티티에 대한 액세스 권한을 부여, 당신은 그것을 줄 수, 그렇지 않으면 내가 생각하는 모델보기에서 삭제하여 물건을 무시합니다. –