2012-01-04 3 views
0

내 테이블에 'Operation_Time', 'Create_User'와 같은 일반적인 열이 있습니다. personels, adress 등 - 내 엔터티 개체의 많은 형식에 대한 업데이트 코드를 작성하는 대신 entityobject 걸릴 및 해당 대상 필드를 업데이트 할 정적 메서드를 작성하고 싶습니다. 데이터 세트를 사용하면 DataTable이 매우 쉽습니다.다른 유형의 Entity 개체의 공통 속성을 업데이트하는 방법?

function updateEntityObjectsCommonFields(EntityObject obj) 
{ /// just i guess 
    obj.Fields["Create_Usr"] = Session.Usr; 
    obj.Fields["Operation_Time"] = DateTime.Now; 
    obj.Fields["Last_Op_Usr"] = Session.Usr; 
} 

/// usage 
updateEntityObjectsCommonFields(Person) ; 
updateEntityObjectsCommonFields(Adres)  
updateEntityObjectsCommonFields(Application) ; ; 

모든 솔루션?

미리 감사드립니다.

답변

0

엔티티가 필요한 필드를 지정하고이 인터페이스와 관련하여 업데이트 기능을 작성하는 공통 인터페이스를 구현하게하십시오.

public interface IAuditEntity 
{ 
    User CreateUsr { get; set;} 
    DateTime OperationTime { get; set;} 
    User LastOperationUser { get; set;} 
} 

public void UpdateEntityObjectsCommonFields(IAuditEntityobj) 
{ /// just i guess 
    obj.CreateUsr = Session.Usr; 
    obj.OperationTime = DateTime.Now; 
    obj.LastOperationUser = Session.Usr; 
} 

당신이 그 (것)들을 수정하여 인터페이스를 구현 할 수 있습니다 T4 template 또는 특정 단체가 partial class 파일에 사용자 인터페이스를 구현할 수 있도록함으로써 (이 모든 기관에 적용되는 경우).

+0

감사 Wouter. 솔루션을 시도하지만 엔터티 모델을 업데이트하면 어떻게됩니까? 모든 인터페이스 관계를 덮어 씁니까? 이것에 대한 해결책은 무엇입니까? – Yaya

+0

Visual Studio에서 생성 한 파일에 코드를 작성하면 덮어 씁니다. 그렇기 때문에 T4를 살펴 보았습니다 (코드 생성을 매우 쉽게 변경하고 인터페이스를 추가 할 수 있음) 또는 partial 클래스 (= 생성 된 클래스를 다른 코드 파일로 확장하여 코드를 다시 생성 할 때 덮어 쓰지 않도록) –

+0

감사 Wouter. 문제가 해결되었습니다. – Yaya

관련 문제